代码:
val = val.replace(/(^|[^\[])\^/g, '$1');
去掉前面不为[的^
匹配以^开头的^, 或者任何非[后的^ 其中
[^\[]
让这个正则可以跨越多行匹配。
哦,好像转义了反斜杠,应该是这样的:
val = val.replace(/(^|[^\[])\^/g, '$1');
例子 /^ *[([^]]+)]: *<?([^\s>]+)>?(?: +"([")])? *(?:\n+|$)/.source.replace(/(^|[^[])^/g, '$1')
结果:
" *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)"
无意义
function replace(regex, opt) { regex = regex.source; opt = opt || ''; return function self(name, val) { if (!name) return new RegExp(regex, opt); val = val.source || val; val = val.replace(/(^|[^[])^/g, '$1'); regex = regex.replace(name, val); return self; }; }
在我看来是无意义的。