快一:这个RegEx有什么问题?

时间:2011-10-10 20:50:51

标签: javascript regex

我有这段代码:

_regex = /((?<!placeholder)\w+(?:\s*=\s*(?:"[^"]*"|'[^']*')))/;     
imgTag = imgTag.replaceAll(_regex, ' ');

还试过这个而不是

imgTag = imgTag.replace( new RegExp( /((?<!placeholder)\w+(?:\s*=\s*(?:"[^"]*"|'[^']*')))/, "gi" ), ' ');

但是我的代码永远不会通过这个行:

_regex = /((?<!placeholder)\w+(?:\s*=\s*(?:"[^"]*"|'[^']*')))/;     

行:

imgTag = imgTag.replace( new RegExp( /((?<!placeholder)\w+(?:\s*=\s*(?:"[^"]*"|'[^']*')))/, "gi" ), ' ');

问题出在我的RegEx中,对吧?

我看不到它,有人可以请光吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

Javascript不支持lookbehinds。你不能写这个:

(?<!placeholder)

改为使用前瞻:

((?!placeholder).{11}|^.{0,10})

您还需要调整替换字符串,因为这会在您要替换的内容之前匹配额外的字符。


这也不起作用:var regex = new Regexp(/.../, "gi");

改为写下:var regex = /.../gi;

答案 1 :(得分:2)

JavaScript不支持后视模式。 (那是(?< pattern )部分。)