JS 正则表达式 零宽断言 使用报错
源程序:
<script language="javascript">
a="{$a2$}{$a4$}";
a=a.replace(/(?<=\{\$a\d+\$)\}(?=.)/gi,"}\r\n");
alert(a);
</script>
说明:把左边是{$a数字$ 右边为不为空的任意字符"}"符号右侧加上回车符 \r\n 实现换行
显示应该是
{$a2$}
{$a4$}
但是使用?<=的零宽后发断言浏览器就报错,IE7下无任何提示,firefox在错误控制台中的错误信息是
错误: invalid quantifier ?<=\{\$a\d+\$)\}(?=.)
源文件:file:///E:/EasyPHP-5.3.2/www/editer/test.html
行:26,列:12
源代码:
a=a.replace(/(?<=\{\$a\d+\$)\}(?=.)/gi,"}\r\n");
使用零宽先行断言则无误。例如
<script language="javascript">
a="{$a2$}{$a4$}";
a=a.replace(/\}(?=.)/gi,"XX");
alert(a);
</script>
显示为{$a2$XX{$a4$} 正常
请问?<=的零宽后发断言在js中为何报错