如何解释这个正则表达式/ [\ W _] / g

时间:2016-02-10 19:29:17

标签: javascript regex

我的代码是:

var result2 = result.replace(/[\W_]/g,"").replace(",","").replace(".","");

代码工作我得到了我需要做的,但我不明白正则表达式/[\W_]/g如何工作,我找不到任何我理解的文档。

5 个答案:

答案 0 :(得分:4)

/ ... /g这是一个全球正则表达式。因此它将在字符串中的多个匹配项上运行 [ ... ]这会创建一个character set。基本上它会匹配列出的字符集中的任何单个字符 \W_这与inverse of "word characters"和下划线匹配。任何非单词字符。

然后你可以用逗号和句号替换一些。老实说,如果这是完整的代码/[\W_,.]/g,省略另外两个替换,也可以。

答案 1 :(得分:2)

[]是字符集的开头和结尾 \W表示"非单词",而不是与单词匹配的\w
_是" _"字符。
/标记正则表达式的开头和结尾 g表示它是全球搜索。

答案 2 :(得分:1)

来自MDN

\ W匹配任何非单词字符。相当于[^ A-Za-z0-9 _]。

例如,/ \ W /或/ [^ A-Za-z0-9 _] /匹配'%'在" 50%。"

下划线(_)匹配文字下划线

括号定义了一个字符类,这意味着如果存在任何非单词或下划线字符,正则表达式将匹配

答案 3 :(得分:1)

  1. \ W表示"任何非单词字符"
  2. [\ W_]表示"任何非单词字符或_
  3. / [\ W _] / g全局查找任何非单词字符或_
  4. replace查找正则表达式的所有出现,并将其替换为另一个字符串。

    所以你的表达式替换任何非单词字符,或_,或。到空字符串(即删除它)

    可以简化为:

    result.replace(/[\W_,\,]/g,"")
    

答案 4 :(得分:0)

好的,让我们分解吧。 replace(/[\W_]/g, "")表示用空字符串替换每个非单词字符和下划线。因此,在字符串$ 1.00中,它将显示为100($和。是非单词字符)。

然后.replace(",","")删除逗号。

.replace(".","")删除了句号。