1

我正在尝试使用杰夫阿特伍德关于检测链接的博客文章中的这个正则表达式:

\(?\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);
4

2 回答 2

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

应该可以工作(您可能需要打开控制台选项卡。)请注意,由于/是文字终端,因此您必须使用字符转义/RegExp 中的任何\字符。

于 2013-10-23T01:21:58.173 回答
1

尝试将其声明为正则表达式变量(在 // 内):

var myRe = /\(?\bhttp:\/\/[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]/;

并查看一些文档

于 2013-10-23T01:18:53.813 回答