“/\((.*)\)/”和“/ \(([^ \]] *)\)/”之间是否存在差异?

时间:2010-07-08 13:43:10

标签: javascript regex

/\((.*)\)//\(([^\)]*)\)/之间是否存在差异?
特别是,第二个正则表达式是否与行结束匹配,而第一个正则表达式不匹配?

2 个答案:

答案 0 :(得分:4)

是的,AFAIK的点与大多数没有修饰符的正则表达式引擎中的换行符不匹配。

编辑:显然JS甚至没有这个选项。我个人认为否定的角色课程是要走的路;我几乎没有在正则表达式中使用点。

答案 1 :(得分:2)

另一个重要区别是点匹配)。假设您正在尝试匹配

中的第一个括号表达式
blah blah (foo) blah blah (bar)

正则表达式/\(.*\)/将与(foo) blah blah (bar)匹配,因为*是贪婪的。你可以通过使用一个不情愿的量词来解决这个问题 - /\(.*?\)/ - 但是如果你想匹配 last 那个怎么办?你知道这是字符串中的最后一件事,所以你只需要添加字符串结尾的锚点/\(.*?\)$/ - 但现在它又回到匹配(foo) blah blah (bar)了。在这种情况下,只有否定的角色类会给你你想要的东西:/\([^)]*\)$/