要有效过滤文本中的特殊字符、Emoji表情、空行和空格,可以使用以下正则表达式解决方案:
/[\x00-\x1F\x7F-\x9F\u2000-\uFFFF\s]+|^\s*$/gmu
这个正则表达式可以: 1. 匹配控制字符(ASCII 0-31, 127-159) 2. 匹配Emoji和其他Unicode特殊字符(2000-FFFF) 3. 匹配空白字符(\s) 4. 匹配空行(^$)
/[\x00-\x1F\x7F-\x9F\u2000-\uFFFF]/g
\x00-\x1F
: ASCII控制字符\x7F-\x9F
: 扩展ASCII控制字符\u2000-\uFFFF
: 匹配所有Unicode特殊字符和Emoji(从U+2000开始)/\s+/g
匹配一个或多个空白字符(空格、制表符、换行符等)
/^\s*$/gm
^
: 行开始\s*
: 零个或多个空白字符$
: 行结束m
标志: 多行模式function sanitizeText(input) {
return input
// 移除特殊字符和Emoji
.replace(/[\x00-\x1F\x7F-\x9F\u2000-\uFFFF]/g, '')
// 合并多个空格为单个空格
.replace(/\s+/g, ' ')
// 移除行首行尾空格
.trim()
// 移除空行
.replace(/^\s*$/gm, '');
}
import re
def sanitize_text(input_text):
# 移除特殊字符和Emoji
text = re.sub(r'[\x00-\x1F\x7F-\x9F\u2000-\uFFFF]', '', input_text)
# 合并多个空格为单个空格
text = re.sub(r'\s+', ' ', text)
# 移除行首行尾空格
text = text.strip()
# 移除空行
text = re.sub(r'^\s*$', '', text, flags=re.MULTILINE)
return text
如果需要更精确的控制,可以分别处理不同类型的字符:
// 仅保留字母、数字、基本标点和空格
/[\w\s.,!?;:'"-]/g
// 更严格的过滤 - 仅保留ASCII可打印字符
/[^\x20-\x7E]/g
// 仅过滤Emoji而不过滤其他特殊字符
/[\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/gu
根据您的具体需求选择合适的正则表达式方案,可以有效地清理和规范化文本输入。