Javascript 替换不包括unicode的非数字字符
我有一个正则表达式,它取代了除了字母数字、空格和破折号以外的所有东西Javascript 替换不包括unicode的非数字字符,javascript,regex,unicode,Javascript,Regex,Unicode,我有一个正则表达式,它取代了除了字母数字、空格和破折号以外的所有东西 str.replace(/[^\w\s-]+/g, '') A) 如何使其排除str中的unicode单词? 我是否应该手动放置所有的!#$%等。我要排除的符号 B) 另外,如果我想去掉表情符号(因为我允许使用其他unicode),只保留其他语言的单词?如果您知道字符集范围,可以排除这些字符集。这将排除所有非数字字符 str = str.replace(/[^0-9]+/g, ''); 最安全的方法是将不希望匹配的字符列
str.replace(/[^\w\s-]+/g, '')
A) 如何使其排除str
中的unicode单词?
我是否应该手动放置所有的!#$%代码>等。我要排除的符号
B) 另外,如果我想去掉表情符号(因为我允许使用其他unicode),只保留其他语言的单词?如果您知道字符集范围,可以排除这些字符集。这将排除所有非数字字符
str = str.replace(/[^0-9]+/g, '');
最安全的方法是将不希望匹配的字符列表包括在字符集中,如A
中所述
^
=负匹配
\w
=a-zA-Z0-9
的快捷方式
\s
=(空格)
,
,$
,%
,以及-
=这些特定字符+
以匹配要删除的单个字符:
Input:str='这是一个测试)(*&^%$#@!~'
Regex:str.replace(/[^\w\s!$%-]/g',);
结果:这是一个测试%$#!
请参见:项目A:
str.replace(/[^A-Za-z0-9\s-]/g',);
?定义“unicode单词”。您想排除什么(显然是从要删除的字符集中排除的)?您能给出一些您所指的表情符号的示例吗?其中一些示例?例如,@JukkaK.Korpela“Δέα”是“unicode单词”在unicode中的希腊字符是:'\u03b9\u03b4\u03ad\u03b1'
。如果我尝试上面的.replace()
,我将得到一个空字符串。示例:示例不是定义。对于编程,您需要一个定义。并且,由于定义了\w
的方式,您会得到一个空字符串(它只匹配某些Ascii字符)。这将删除比问题中的代码多得多的字符。其目的显然是删除更少的字符。