比如下面的 typescript 使用 RegExp 的代码
const regex = new RegExp(String.raw`${prefix}${src.data}`, 'g')
text = text.replace(regex, prefix + newLink)
RegExp 的第一个参数值是 [PIO.png]: ../_resources/PIO.png
,希望直接使用原始字符串,如果不进行转义,[
,.
等字符会被当正则的元字符,请问如何进行转义?
C# 中有 Regex.Escape()
方法1:使用 npm 包 lodash 中内置的 escapeRegExp 方法
import { escapeRegExp } from 'lodash'
const regex = new RegExp(escapeRegExp(String.raw`${prefix}${src.data}`), 'g')
方法2:使用 npm 包 escape-string-regexp
import escapeStringRegexp from 'escape-string-regexp';
const escapedString = escapeStringRegexp('How much $ for a 🦄?');
//=> 'How much \\$ for a 🦄\\?'
方式3: 自己实现,来自 https://stackoverflow.com/a/6969486
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}