2010-07-08 118 views

回答

4

是的,AFAIK點不匹配大多數正則表達式引擎沒有修飾符。

編輯:顯然JS甚至沒有這個選項。我個人認爲否定性格課是要走的路;我很少在正則表達式中使用這個點。

+3

'[\ s \ S]'是JavaScript中「任何包括換行符」的最常用成語。和+1避免點;通過強迫自己思考正則表達式引擎正在做什麼,這是一種改進正則表達式的好方法。 – 2010-07-08 15:53:32

2

另一個重要的區別是點匹配)。假設你是你想在

blah blah (foo) blah blah (bar) 

正則表達式/\(.*\)/將匹配(foo) blah blah (bar)因爲*是貪婪匹配第一個括號表達。你可以通過使用一個不情願的量詞來解決這個問題 - /\(.*?\)/ - 但是如果你想匹配最後一個呢?你知道這是字符串中的最後一件事,所以你只需添加字符串尾部的錨點 - /\(.*?\)$/ - 但現在又回到匹配(foo) blah blah (bar)。在這種情況下,只有否定字符類纔會給你想要的東西:/\([^)]*\)$/

相關問題