3

我在正则表达式方面不是很好,但是发生了不合逻辑的事情:
我用这个小提琴验证了正则表达式的语法:http: //jsfiddle.net/BcQfQ/2/然后将其替换\d为另一个正则表达式以检查来自这里的网址:http: //daringfireball.net/2010/07/improved_regex_for_matching_urls它不起作用:http: //jsfiddle.net/bNHQs/2/。最奇怪的是,当您复制正则表达式并将其粘贴到文本框中(然后在代码中编写 textbox.value)时,一切都很好:http: //jsfiddle.net/6uAQG/2/

不工作的正则表达式的代码:

var reg=/\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/;
var str="2";
if(str.match(reg))alert("test:true");
else alert("test:false");

如何在代码中编写正则表达式以使其正常工作?

4

1 回答 1

5

您必须使用反斜杠转义分隔符(“/”)。分隔符标记表达式的开始和结束。只有在用反斜杠转义时才能使用斜杠。以下表达式应该有效:

var reg=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/;
于 2012-05-08T18:05:38.343 回答