我在这个页面上试用这个正则表达式: http://www.regular-expressions.info/javascriptexample.html
其中Regex = (?:http:\/\/)?(?:www.)?facebook\.com\/([\w\-\.]*)?
和主题字符串= http://www.facebook.com/xxxxxx
这会返回两个匹配项:http://www.facebook.com/xxxxxx
和xxxxxx
我在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);
}
答案 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\-]*)?/;