在javascript中破坏正则表达式?

时间:2012-09-10 09:49:48

标签: javascript regex literals

由于可读性在下面显示的正则表达式文字中有些不存在,我想把它分成几行。我该怎么做以及需要更改/转义什么?

regex = /\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;

由于

1 个答案:

答案 0 :(得分:1)

JavaScript不支持多行正则表达式。但是,您可以从字符串构造正则表达式:

r = new 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")

(我希望我的字符串构建语法正确 - 我不是JavaScript人员,所以如果这不起作用,请告诉我)