代码之家  ›  专栏  ›  技术社区  ›  wzr1337

在javascript字符串中Sanatize类似regex的输入(第二个参数)。替换()

  •  2
  • wzr1337  · 技术社区  · 7 年前

    我很想用绳子。JavaScript中的replace()函数,用于将第一个字符串的特定部分替换为一些不确定的用户输入(第二个字符串)

    示例1:

    > var userinput = "^fancy $& regexlike stuff $/i"
    > "some @@include test".replace(/@@include/, userinput)
    "some ^fancy @@include regexlike stuff $/i test"
    

    应该是

    > var userinput = "^fancy $& regexlike stuff $/i"
    > "some @@include test".replace(/@@include/, userinput)
     "some ^fancy $& regexlike stuff $/i test"
    

    示例2:

    > var userinput = "^fancy $& regexlike stuff $/i"
    > "some @@include test".replace(/@@include/, userinput)
     "some ^fancy & test"
    

    应该是

    > var userinput = "^fancy &$ regexlike stuff $/i"
    > "some @@include test".replace(/@@include/, userinput)
     "some ^fancy &$ regexlike stuff $/i test"
    

    这就是实际问题:

    我如何告诉字符串。replace()忽略第二个参数中给出的所有正则表达式语法 userinput ? 是否有sanatize标志?

    提前非常感谢!

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tushar    7 年前

    只需使用 String#replace . 从函数返回的字符串被视为 一串 . 字符串中的特殊字符不被视为元字符。

    var userinput = "^fancy $& regexlike stuff $/i";
    var output = "some @@include test".replace(/@@include/, () => userinput);
    console.log(output);