网页和Chrome扩展中的不同正则表达式行为

我在这个页面上试用这个正则表达式:http://www.regular-expressions.info/javascriptexample.html

Regex = (?:http://)?(?:www.)?facebook.com/([w-.]*)?

和主题字符串= http://www.facebook.com/xxxxxx

这会返回两个匹配项: http://www.facebook.com/xxxxxx : http://www.facebook.com/xxxxxxxxxxxx

与我的Chrome扩展中嵌入的JavaScript相同,但是它只显示一个匹配项:'http://www.facebook.com/'。 有任何想法吗 ? 以下是代码:

var re = new RegExp("(?:http://)?(?:www.)?facebook.com/(?:profile.php?id=(?=d.*))?([w-]*)?");
  var m = re.exec("http://www.facebook.com/xxxxx");
  if (m == null) {
    alert("No match");
  } else {
    var s = "Match at position " + m.index + ":n";
    for (i = 0; i < m.length; i++) {
      s = s + m[i] + "n";
    }
    alert(s);
  }

当regexp来自一个字符串时,每个反斜杠应该被屏蔽:

var re = new RegExp("(?:http://)?(?:www.)?facebook.com/(?:profile.php?id=(?=d.*))?([w-]*)?");

在JavaScript中,您还可以创建不带字符串的正则表达式模式:

var re = /(?:http://)?(?:www.)?facebook.com/(?:profile.php?id=(?=d.*))?([w-]*)?/;
链接地址: http://www.djcxy.com/p/74835.html

上一篇: Different regex behaviour in web page and Chrome extension

下一篇: Posix regex capture group matching sequence