2014-07-04 34 views
0

當使用/[ -_]+/作爲參數在JavaScript中string.split,它作爲如果它是/['\"]+/爲什麼的JavaScript string.split(/ [-_] + /)充當如果引號(」和「)被包括在[組]在?

"a'b".split(/[ -_]+/) 
'a"b'.split(/[ -_]+/) 

回報

["a", "b"] 

我只看到此行爲與精確的正則表達式:[ -_]即空格,連字符和下劃線如果我刪除任何它的行爲這3個字符(什麼在我看來是)正確,通過不分裂'和「

此行爲是否正確?

回答

4

- has special meaning inside of character classes.它表示一個字符的範圍。在這種情況下,範圍是從空格(ASCII 32)到下劃線(ASCII 95)。由於'"的ASCII碼分別爲39和34(分別),因此它們屬於該範圍。

逃生,如果你想拆就字面-;

"a'b".split(/[ \-_]+/) 

,或使連字符的字符類的第一個字符:

"a'b".split(/[- _]+/) 
3

這裏的連字符被用於指定字符的範圍。

[ -_]表示「每個字符在空格和下劃線之間」。

所以......單和雙引號字符清晰地來到之間的空間和下劃線字符。

0

看來你regex是錯誤的,「 - 」這意味着: - 範圍內的單個字符介於和_之間。

您可以在http://regex101.com/#javascript現場測試你的正則表達式。

相關問題