2010-07-08 114 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)。在这种情况下,只有否定字符类才会给你想要的东西:/\([^)]*\)$/

相关问题