javascript - 告诉正则表达式不要做它应该做的事情。 (不要替换 $&)

标签 javascript regex selenium nightwatch.js

因此,我有一个用于测试的预处理器,它可以替换注释,以 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/

相关文章:

java - 在 Java 中获取 String.replaceAll 上的 java.lang.StackOverflowError

Javascript 调试 : pause on click event

javascript - 使用错误和 helperText react Material UI 表单验证

javascript - 使用 date-fns 进行德语日期验证

java - 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

java - 使用 Selenium Grid 时的 ChromeDriver 日志记录

python - Selenium Python - 显式等待不起作用

javascript - 我想在同一张卡片中显示数据作为两列任何建议

regex - 带有连字符,单引号和单个空格的正则表达式字母数字超时(崩溃)

python - 使用正则表达式在不应该的时候使用加号