我对Regexp很新,似乎\
用于元字符。我的问题是我想要正确搜索此字符串\"mediaType\":\"img\"
现在我还想动态地为img添加一个变量。所以我希望它是这样的
new RegExp(`\"mediaType\":\"${variable}\"`)
如何编写此文件以使其正常工作?
答案 0 :(得分:1)
简答:
*
答案很长:
除了用于元字符外,正则表达式中的反斜杠可用于转义否则具有意义的字符(如$
,\
,括号和\\
)。因此,在正则表达式中匹配反斜杠的方法是添加另一个作为转义字符:\\"mediaType\\":\\"img\\"
。
考虑到这一点,您想要最终得到的正则表达式是\
,如果您使用的是正则表达式文字,那么它就是它。不幸的是,它需要更多参与,因为你需要动态创建表达式,你需要提供表达式作为字符串,也需要反斜杠转义。这增加了第二层转义,因此您需要再次加倍每个new RegExp('\\\\"mediaType\\\\":\\\\"img\\\\"')
个字符,最后得到variable
。
另一个复杂因素是您希望RegExp
的内容按字面匹配,而不是解释为正则表达式。不幸的是,没有内置的方法来自动转义JavaScript中的正则表达式,因此您需要使用Is there a RegExp.escape function in Javascript?中的一个解决方案。我使用了接受的答案的略微修改版本,将其定义为独立函数,而不是将其添加到{{1}}对象。只要您逃离动态部分,确切的解决方案无关紧要。