我有下面的代碼的JavaScript線,消除characters-包括來自於字符串commas-:從正則表達式
return str.replace(/(?!\/)(?!\)(?!\-)(\W)/ig, '');
如何我只能拿出一段代碼,刪除逗號?
我有下面的代碼的JavaScript線,消除characters-包括來自於字符串commas-:從正則表達式
return str.replace(/(?!\/)(?!\)(?!\-)(\W)/ig, '');
如何我只能拿出一段代碼,刪除逗號?
/(?!\/)(?!\)(?!\-)(\W)/ig
這不是一個「字」的字符(即[a-zA-Z0-9_]
)和3個向前看符號的任何字符匹配正則表達式也限制字符/
,和
-
。逗號被刪除,因爲它是\W
的一部分。
如果你想保持它,再添前瞻:(?!,)
,那麼你的正則表達式變成:
return str.replace(/(?!\/)(?!)(?!-)(?!,)(\W)/g, '');
我已經去除了unnecessay逃逸和不區分大小寫的標誌。
這應該寫成:
return str.replace(/[^\w\/, -]/g, '');
謝謝你的回答,你能解釋爲什麼我不能簡單地從正則表達式中刪除這個部分:'\ W'?你能解釋一下你的意思嗎?_我已經刪除了不必要的轉義和不區分大小寫的flag._?謝謝! – user3378165
@ user3378165:在正則表達式中,您必須轉義某些特殊字符。空間和衝刺不是特別的,所以沒有必要逃避它們。你不能只刪除'\ W',因爲它只剩下3個負長度匹配的負面預測,你不能一無所有! – Toto
@ user3378165:對於一些正則表達式的基礎知識,請參閱http://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean和http://www.regular-expressions.info/ – Toto
不是downvoter,但請提供一些更多的信息和預期的輸入和輸出字符串。 – Jan