为什么这个javascript正则表达式给我一个语法错误?

时间:2013-10-23 01:14:28

标签: javascript regex

我正在尝试使用此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);

2 个答案:

答案 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+&@#/%=~_()|]/;

并查看some documentation