Skip to content

Latest commit

 

History

History
43 lines (26 loc) · 1.56 KB

escapeRegExp.md

File metadata and controls

43 lines (26 loc) · 1.56 KB

lodash源码分析之escapeRegExp

本文为读 lodash 源码的第三百二十一篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

gitbook也会同步仓库的更新,gitbook地址:pocket-lodash

源码分析

escapeRegExp 会对在正则表达式中有特殊含义的字符进行转义。

即如下这些字符:

"^", "$", "\", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", "|" 

源码如下:

const reRegExpChar = /[\\^$.*+?()[\]{}|]/g
const reHasRegExpChar = RegExp(reRegExpChar.source)

function escapeRegExp(string) {
  return (string && reHasRegExpChar.test(string))
    ? string.replace(reRegExpChar, '\\$&')
    : (string || '')
}

reHasRegExpChar 用来检测字符串中是否有以上列举的字符的正则。

调用正则的 test 方法来检测字符串中是否包含这些字符,如果有,则调用字符串的 replace 方法,将匹配到的字符在前面加上一个 \ 来转义。

可以看到,replace 方法用了 $& 来获取被匹配到的字符串,这是 replace 的特殊变量名。

License

署名-非商业性使用-禁止演绎 4.0 国际 (CC BY-NC-ND 4.0)

最后,所有文章都会同步发送到微信公众号上,欢迎关注,欢迎提意见:

作者:对角另一面