URL正则表达式在javascript中不起作用

joh*_*sel 10 javascript regex url

我试图在Javascript中使用John Gruber的URL正则表达式,但NetBeans一直告诉我存在语法错误和非法错误:

 var patt = "/(?i)\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`!()\[\]{};:
'".,<>?«»“”‘’]))/";
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

Fla*_*ino 19

正如其他人所说,这是双引号.但另外,你可以在javascript中将regexp写为文字(但是你需要在第1行和第3行中转义正斜杠).

var regexp = /\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`!()\[\]{};:'".,<>?«»“”‘’]))/i;
Run Code Online (Sandbox Code Playgroud)

我还将不区分大小写的修饰符移到了最后.只是因为.(编辑:嗯,不只是"因为" - 请参阅下面的艾伦摩尔的评论)

注意:无论您使用文字还是字符串,都必须在1行.

  • 用于将`i`修饰符移动到结尾的+1.JavaScript不支持Gruber使用的内联修饰符语法(`(?i)`). (2认同)