因此,我有一个用于测试的预处理器,它可以替换注释,以 DRY 方式构建自动化测试。它生成可以正常运行的文件。当我需要在测试步骤中使用 regexp 时,唯一的问题就会出现,如下所示:
.step(/^Search for special characters$/, function() {
client.setValue("input[type=text]", "@#$%^&*()_ -={}[]|\\\"':;? >.<,`©®ÉÖ]]™\"".replace(/[-[\]{}()*+?.,\\^$|"'#\s]/g, "\\$&")
}
当然,我最终得到的是一个如下所示的测试文件:
client.setValue("input[type=text]", "@#$%^&*()_ -={}[]|\\\"':;? >.<,`©®ÉÖ]]™\"".replace(/[-[\]{}()*+?.,\\^$|"'#\s]/g, "\\//Search for special characters")
有没有办法告诉javascript“不要用匹配结果替换$&!”?
最佳答案
.replace()
函数替换(插入)以 $
开头的内容。所以 $
就是你需要转义的字符,因为反斜杠仍然是 JS 字符串本身的转义机制。
这可以通过加倍来实现:
"foo".replace(/foo/, "$$&")
另请参阅:The spec, section 15.5.4.11 .
关于javascript - 告诉正则表达式不要做它应该做的事情。 (不要替换 $&),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35992133/