2017-06-22 83 views
0
str = "The stor-+)_y is someth12ing that [email protected]#ee3 de124scrib%^&ing 
becom5es life7 4 difficult"; 
console.log(str.replace(/\W/g,'')); 

这位RegEx用于匹配所有非字母数字字符,但不能选择'下划线'? 据我所知,\ d是所有数字 \ s为空格...所以,什么字母代表下划线?哪些符号与Js中的正则表达式中的“下划线”匹配

+0

你的意思是'/ [\ W _]/g'? –

+0

*“什么字母代表下划线”*无字母代表下划线,下划线是字体效果。如果你问什么字符匹配*下划线*,它是......下划线:'_'。 –

+0

而你需要的字符被称为*下划线*,而不是*下划线* –

回答

0

要匹配所有非字母数字字符,\W是不够的,因为匹配与[^a-zA-Z0-9_]相同的文本。与您正则表达式匹配_,加_\W到字符类:

str = "The stor-+)_y is someth12ing that [email protected]#ee3 de124scrib%^&ing becom5es life7 4 difficult"; 
 
console.log(str.replace(/[\W_]+/g,''));

既然你删除,最好是与+量化(除去1+在一个连续的occureences走)。

+0

明白了,它是这样工作的;但是,你能解释为什么我们在\ W之后使用[]和_?如果我们想要添加数字'\ d'然后添加“_”它是指所有数字和下划线? –

+0

''形成一个*字符类*(或*括号表达式*),与类中定义的单个字符相匹配。 '[\ d _。] +'匹配一个或多个数字,'.'或/和'_'。你可以阅读更多关于[* character classes * here](http://www.regular-expressions.info/charclass.html)。 –