2016-02-10 66 views
2

我的代碼是:如何解釋這個正則表達式/ [ W _]/G

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

代碼工作我得到了我需要做的,但我不明白如何正則表達式/[\W_]/g作品,我找不到任何我理解的文檔。

+0

'/ [\ W _]/g'將匹配非單詞字符和下劃線。 '/ g'全局匹配。 [看這個作弊表](https://www.debuggex.com/cheatsheet/regex/javascript)。 – jperezov

+0

我強烈建議您轉到http://regexr.com/。在那裏,點擊「參考」。這是瞭解正則表達式的好地方。 –

回答

3

/ ... /g這是一個全球性的正則表達式。所以它將在字符串中的多個匹配上運行。
[ ... ]這創建了character set。基本上它會匹配列出的一組字符中的任何單個字符。
\W_這匹配inverse of "word characters"和下劃線。任何非單詞字符。

然後你有幾個逗號和句號的替代品。老實說,如果這是完整的代碼,/[\W_,.]/g,省略其他兩個替換,也可以。

1

[]是字符集的開始和結尾。
\W表示「非單詞」,而不是\w它將匹配一個單詞。
_是「_」字符。
/標記正則表達式的開始和結束。
g這意味着這是一個全球搜索。

1

MDN

\ W匹配任何非單詞字符。相當於[^ A-Za-z0-9_]。

例如,/ \ W /或/ [^ A-Za-z0-9 _] /與「50%」中的'%'匹配。

下劃線(_)字面下劃線

托架限定一個字符類的含義是,如果任何非字或一個下劃線字符是本

1
  1. \ W裝置「的任何正則表達式匹配相匹配非字字符 「
  2. [\ W_]表示」 任何非字字符或_
  3. /[\ W _] /克找到全局任何非字字符或_

replace查找所有正則表達式的出現次數,並用另一個字符串替換它。

因此,您的表達式會替換任何非單詞字符或_或。爲空字符串(即刪除)

它可以簡化爲:

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

好吧,讓我們來分析一下。 replace(/[\W_]/g, "")表示用空字符串替換每個非單詞字符和下劃線。所以在字符串$ 1.00中,它會以100($和。是非單詞字符)出現。

然後.replace(",","")刪除逗號。

.replace(".","")刪除句點。