有人能解释为什么这个正则表达式与不同的正则表达式有不同的匹配吗?

时间:2011-03-10 23:11:56

标签: javascript .net regex

案文是:

Here is some text!

正则表达式(寻找单个匹配)是:

Here is (\w+\s?)+

在.NET中有一个匹配:Here is some text

...但在javascript中有两个:Here is some texttext

为什么js中只有两个匹配,.NET中只有一个?

2 个答案:

答案 0 :(得分:2)

正则表达式中的括号创建一个捕获组。在js中你看到的是完全匹配和组匹配,在.NET中你只看到完全匹配(尽管你也应该能够访问该组)。

如果您不想捕获括号内的内容,请改为使用此正则表达式:

Here is (?:\w+\s?)+

答案 1 :(得分:0)

如果你想和.Net一样给你匹配,在js do:

var regex = new RegExp("Here is (\\w+\\s?)+", "g");

var txt = "Here is some text!";
while (match = regex.exec(txt)) {
  window.alert(match[0]);
}

在您的情况下,它应该只提醒您一次。每个匹配数组包含位置0的匹配,然后包含所有捕获组,但您似乎不需要它们。