我正在尝试在以下语句中将两个括号之间的文本“foo”匹配:
期待[foo]但收到了[__]
然后我尝试用“......”替换文本。当我运行以下代码时,我在JavaScript中得到一个无效的分组错误。当我在Regexr中运行表达式时,它按照我期望的方式工作。
var text = $("#assertion").html().replace( /(?<=Expected \[).*(?=\] )/,"...");
答案 0 :(得分:7)
Javascript正则表达式不了解回顾(?<=
)。您需要明确地匹配Expected [
部分:
replace(/(Expected \[)[^\]]*/, "$1...")
$ 1是为了避免重新输入“Expected [”部分而我更改了正则表达式的其余部分以避免与.*
贪婪匹配
答案 1 :(得分:4)
因为javascript不支持断言后面的内容。
您可以通过将其放入捕获组并在替换
中使用它来解决.replace( /(Expected \[).*(?=\] )/,"$1...");
第一对括号的内容存储在捕获组1中,您可以使用$1