如何在JS中使用Regexp制作\文字反斜杠

时间:2017-10-18 14:03:17

标签: javascript regex

我对Regexp很新,似乎\用于元字符。我的问题是我想要正确搜索此字符串\"mediaType\":\"img\"

现在我还想动态地为img添加一个变量。所以我希望它是这样的

new RegExp(`\"mediaType\":\"${variable}\"`)

如何编写此文件以使其正常工作?

1 个答案:

答案 0 :(得分:1)

简答:

*

答案很长:

除了用于元字符外,正则表达式中的反斜杠可用于转义否则具有意义的字符(如$\,括号和\\)。因此,在正则表达式中匹配反斜杠的方法是添加另一个作为转义字符:\\"mediaType\\":\\"img\\"

考虑到这一点,您想要最终得到的正则表达式是\,如果您使用的是正则表达式文字,那么它就是它。不幸的是,它需要更多参与,因为你需要动态创建表达式,你需要提供表达式作为字符串,也需要反斜杠转义。这增加了第二层转义,因此您需要再次加倍每个new RegExp('\\\\"mediaType\\\\":\\\\"img\\\\"')个字符,最后得到variable

另一个复杂因素是您希望RegExp的内容按字面匹配,而不是解释为正则表达式。不幸的是,没有内置的方法来自动转义JavaScript中的正则表达式,因此您需要使用Is there a RegExp.escape function in Javascript?中的一个解决方案。我使用了接受的答案的略微修改版本,将其定义为独立函数,而不是将其添加到{{1}}对象。只要您逃离动态部分,确切的解决方案无关紧要。