我正在尝试使用此jeff Atwood's blog post的正则表达式来检测链接:
\(?\bhttp://[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]
但是,这个JS代码会中断并提供SyntaxError: Unexpected token ILLEGAL
var myRe = \(?\bhttp://[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|];
var myArray = myRe.exec("http://en.wikipedia.org/wiki/PC_Tools_(Central_Point_Software)");
console.log(myArray);
答案 0 :(得分:3)
这是因为你的JS实际上是无效的。这不是有效的RegExp文字:
var myRe = \(?\bhttp://[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|];
RegExp文字以/
开头,同样以JS中的/
结尾,因此您可以将代码更改为:
var myRe = /\(?\bhttp:\/\/[-A-Za-z0-9+&@#\/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#\/%=~_()|]/;
它should work(您可能需要打开控制台选项卡。)请注意,因为/
是一个文字终端,您必须使用RegExp中的任何/
个字符进行转义一个\
字符。
答案 1 :(得分:1)
尝试将其声明为正则表达式变量(在//中):
var myRe = /\(?\bhttp:\/\/[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]/;