var newstr= str.replace(/[\W_]/g, ''); //replace all non-alfanumeric blank
这是我在Javascript中从字符串中删除非alfanumeric字符时尝试的代码。
请说明</[\W_]/g>
与</\w+/g>
和</\w/g>
之间的区别。
答案 0 :(得分:1)
如果我们 / [\ __] / g str 对象中的任何此特殊符号,请替换空(“”)值。
答案 1 :(得分:1)
\w
:1个字的字符。它相当于[A-Za-z0-9_]
\w+
:1个或多个单词字符。
\W
:1个非单词字符。它相当于[^\w]
或[^A-Za-z0-9_]
所以\W
是任何不是字母的东西,不是数字而不是下划线。
[\W_]
:具有非单词字符和下划线的字符类。
它相当于[^A-Za-z0-9]
请注意,如果 g lobal替换为空,则代码str.replace(/\W/g,'')
将提供与str.replace(/\W+/g,'')
相同的结果。前者将一次替换它们1个字符,而后者将替换当时1个或多个字符的组。
有关正则表达式语法的详细信息,请参阅this old post
或者您可以将您的正则表达式复制并粘贴到在线正则表达式测试器中
例如regexr或regex101
然后查看解释,或将鼠标指针悬停在模式上以获取有关模式的每个部分的提示。