chore: 更新素材和组件优化
- 更新展品图片(鲁迅/毛泽东/孙中山/黄炎培/聂耳/张乐平故居) - 新增点击查看图标、报纸素材 - 优化视频组件、拼图组件、展品组件 - 更新陈云音频资源 - 新增输入验证文档和工具函数 - 组件布局和动画优化 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
73d02eb62d
commit
73f6df92ce
130 files changed
+2345
-759
No files matched your search
@@ -5,20 +5,56 @@
|
||||
|
||||
// 敏感词库(可根据实际需求扩展)
|
||||
const SENSITIVE_WORDS = [
|
||||
// 基础不文明用语
|
||||
'垃圾',
|
||||
'脏话',
|
||||
'骂人',
|
||||
'辱骂',
|
||||
'仇恨',
|
||||
'傻逼',
|
||||
'煞笔',
|
||||
'傻b',
|
||||
'傻比',
|
||||
'sb',
|
||||
'SB',
|
||||
'草泥马',
|
||||
'操',
|
||||
'妈的',
|
||||
'他妈',
|
||||
'你妈',
|
||||
'去死',
|
||||
'找死',
|
||||
'该死',
|
||||
'白痴',
|
||||
'智障',
|
||||
'弱智',
|
||||
'脑残',
|
||||
'废物',
|
||||
'贱',
|
||||
'滚',
|
||||
// 暴力相关
|
||||
'暴力',
|
||||
'恐怖',
|
||||
'杀人',
|
||||
'杀害',
|
||||
'血腥',
|
||||
'虐待',
|
||||
// 违法违规
|
||||
'色情',
|
||||
'赌博',
|
||||
'诈骗',
|
||||
'毒品',
|
||||
'邪教',
|
||||
'反动',
|
||||
'辱骂',
|
||||
'仇恨',
|
||||
'sb',
|
||||
'法轮功',
|
||||
'传销',
|
||||
'洗钱',
|
||||
'贩毒',
|
||||
'走私',
|
||||
// 歧视性用语
|
||||
'歧视',
|
||||
'种族',
|
||||
'民族歧视',
|
||||
]
|
||||
|
||||
type FileSaveHandle = {
|
||||
@@ -78,6 +114,28 @@ export async function downloadDataUrlImage(dataUrl: string, filename: string): P
|
||||
triggerAnchorDownload(blob, filename)
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查文本中是否包含英文字母
|
||||
*/
|
||||
export function containsEnglish(text: string): boolean {
|
||||
return /[a-zA-Z]/.test(text)
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查文本中是否包含数字
|
||||
*/
|
||||
export function containsNumber(text: string): boolean {
|
||||
return /\d/.test(text)
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查文本中是否包含特殊符号或标点符号
|
||||
*/
|
||||
export function containsSpecialChars(text: string): boolean {
|
||||
// 检测所有标点符号和特殊符号(包括中文标点)
|
||||
return /[\p{P}\p{S}]/u.test(text)
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查文本中是否包含敏感词
|
||||
* @param text 待检查的文本
|
||||
@@ -117,8 +175,50 @@ export function filterSensitiveWords(text: string): string {
|
||||
export function filterInput(input: string): string {
|
||||
if (!input) return input
|
||||
|
||||
// 先进行敏感词过滤
|
||||
const filtered = filterSensitiveWords(input)
|
||||
let filtered = input
|
||||
|
||||
// 过滤英文字母
|
||||
filtered = filtered.replace(/[a-zA-Z]/g, '')
|
||||
|
||||
// 过滤数字
|
||||
filtered = filtered.replace(/\d/g, '')
|
||||
|
||||
// 过滤所有标点符号和特殊符号
|
||||
// 保留:中文字符、空格
|
||||
// 过滤:所有标点符号(包括中文标点和英文标点)、特殊符号
|
||||
filtered = filtered.replace(/[\p{P}\p{S}]/gu, '')
|
||||
|
||||
// 进行敏感词过滤(替换为星号,不直接删除)
|
||||
filtered = filterSensitiveWords(filtered)
|
||||
|
||||
return filtered
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证输入内容的完整性
|
||||
* @param input 用户输入的内容
|
||||
* @returns 验证结果 { valid: boolean, message: string }
|
||||
*/
|
||||
export function validateInput(input: string): { valid: boolean; message: string } {
|
||||
if (!input || !input.trim()) {
|
||||
return { valid: false, message: '内容不能为空' }
|
||||
}
|
||||
|
||||
if (containsEnglish(input)) {
|
||||
return { valid: false, message: '不能包含英文字母' }
|
||||
}
|
||||
|
||||
if (containsNumber(input)) {
|
||||
return { valid: false, message: '不能包含数字' }
|
||||
}
|
||||
|
||||
if (containsSpecialChars(input)) {
|
||||
return { valid: false, message: '不能包含特殊符号' }
|
||||
}
|
||||
|
||||
if (containsSensitiveWord(input)) {
|
||||
return { valid: false, message: '内容包含敏感词,请修改后重试' }
|
||||
}
|
||||
|
||||
return { valid: true, message: '' }
|
||||
}
|
||||
Reference in new issue
Block a user