【问题标题】:Can someone explain why this regular expression matches differently with different regex flavors?有人可以解释为什么这个正则表达式与不同的正则表达式风格匹配不同吗?
【发布时间】:2011-03-10 23:11:56
【问题描述】:
正文是:
Here is some text!
正则表达式(寻找单个匹配)是:
Here is (\w+\s?)+
在 .NET 中有一个匹配项:Here is some text
...但在 javascript 中有两个:Here is some text 和 text。
为什么 js 中有两个匹配项,而 .NET 中只有一个匹配项?
【问题讨论】:
标签:
javascript
.net
regex
【解决方案1】:
正则表达式中的括号创建一个捕获组。在 js 中您看到的是完全匹配和组匹配,在 .NET 中您只看到完全匹配(尽管您也应该能够访问组)。
如果您不想捕获括号内的内容,请改用此正则表达式:
Here is (?:\w+\s?)+
【解决方案2】:
如果你想要和 .Net 给你的匹配一样,在 js 中做:
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 的匹配项,然后是所有捕获组,但您似乎不需要它们。