如何删除一切,但:
字母,数字,空格,感叹号,问题从一个字符串的标记?
重要的是,该方法支持国际语言(UTF-8)。
如何删除一切,但:
字母,数字,空格,感叹号,问题从一个字符串的标记?
重要的是,该方法支持国际语言(UTF-8)。
您可以使用正则表达式
myString.replace(/[^\w\s!?]/g,'');
这将取代一切,但一个字字符,空间,感叹号或问题。
字符类 :
\w
代表“字字符”,通常[A-Za-z0-9_]
注意下划线和数字的包容性。
\s
代表“空白字符”。 它包括[ \t\r\n]
。
如果你不想下划线,你可以用[A-Za-z0-9]
myString.replace(/[^A-Za-z0-9\s!?]/g,'');
对于Unicode字符,你可以添加类似\u0000-\u0080
来表达。 这将排除的unicode范围内的所有字符。 你必须指定字符你不想删除的范围。 你可以看到所有的代码的Unicode地图 。 只需添加你想要保持的字符或字符范围。
例如:
myString.replace(/[^A-Za-z0-9\s!?\u0000-\u0080\u0082]/g,'');
这将允许前面提到的所有字符,范围为\u0000-\u0080
和\u0082
。 它会删除\u0081
。
这两个答案贴到目前为止留出了问号。 我会提出意见,但没有足够的代表呢。
大卫是正确的,sachleen的正则表达式将离开强调后面。 rcdmk的正则表达式,作如下修改,就可以了,但如果你关心的国际人物,事情可能会变得复杂得多。
var result = text.replace(/[^a-zA-Z0-9\s!?]+/g, '');
这会留下新的生产线和标签以及空格。 如果你想摆脱的新行和制表符,以及,将其更改为:
var result = text.replace(/[^a-zA-Z0-9 !?]+/g, '');
text = "A(B){C};:a.b*!c??!1<>2@#3"
result = text.replace(/[^a-zA-Z0-9]/g, '')
应该返回ABCabc123
首先,我们定义文本
ABC abc 1 2 3
,但与随机字符集的result
为:
text.replace(...)
其中的参数:
/.../g
,/.../
:^
意味着扭转; 不去除它们的字母:
az
(小写字母),AZ
(大写字母)和0-9
(数字)
g
意味着全球,删除所有的比赛不只是第一场比赛第二个参数是替换字符,我们把它设置为空字符串,以便它只是让指定的字符串。 如果
是指定的,它会返回这样的:
"ABC abc 1 2 3"
可以使用正则表达式等尝试: var cleaned = someString.replace(/[^a-zA-Z0-9! ]+/g, "");