网页和Chrome扩展程序中的不同正则表现形式

时间:2011-06-15 23:00:44

标签: javascript regex google-chrome google-chrome-extension

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

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

和主题字符串= 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);
  }

1 个答案:

答案 0 :(得分:2)

当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\-]*)?/;