# escapeRegExp
# Description
转义 RegExp 字符串中特殊的字符 ^
, $
,.
,*
,+
,?
,(
,)
,[
,]
,和|
.
# Params
string
# Return
string
# Code
/**
* Used to match `RegExp`
* [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
*/
const reRegExpChar = /[\\^$.*+?()[\]{}|]/g
const reHasRegExpChar = RegExp(reRegExpChar.source)
function escapeRegExp(string) {
return (string && reHasRegExpChar.test(string))
? string.replace(reRegExpChar, '\\$&')
: (string || '')
}
# Analyze
就是使用正则匹配上述字符,并进行转义,在其之前加 \
$&
为最后一个匹配到的字符,正则的写法
# Remark
String.prototype.replace() MDN (opens new window) 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新字符串。模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。如果 pattern 是字符串,则仅替换第一个匹配项。
# Example
console.log(escapeRegExp('[google](https://www.google.com)')) // \[google\]\(https://www\.google\.com\)