正则表达式方法总结

"正则中的符号相当多,如果不进行下分类,这种火星文真的很难去记忆。"

Posted by xiaobai on July 8, 2018

如果用一个形容词来形容正则的话我觉得那就是火星文,对于一个不了解的它的人来说可读性实在是太差。但对于开发人员来说,很多时候它为我们带来了很多的方便。

正则中的符号相当多,如果不进行下分类,这种火星文真的很难去记忆。

  1. 元字符

tips:

常见的还有

\b:匹配一个词的边界。

/\bm/匹配“moon”中得‘m’;

  • /oo\b/并不匹配”moon”中得’oo’,因为’oo’被一个“字”字符’n’紧跟着。

\B匹配一个非单词边界

^如果在一个集合中,表示排除,而不是以某种匹配模式开头即反向字符集eg:[^xyz]

\s 等价于:

[\f\n\r\t\v\u00a0\u1680\u180e\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]。

\S等价于:

[^ \f\n\r\t\v\u00a0\u1680\u180e\u2000\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]

  1. 量词

3.分支和字符集

  • (a|b|c) === [a-c]
  • /(ab bb cb)/ === /[abc]b/
  • [abc] === [a-c]
  • [^abc] === [^a-c]

4.分组&引用

l /(\d{4})-(\d{2})-(\d{2})/ 【分组】

l /(\d{4})-(\d{2})-\2/ 【引用】

第三个匹配项目 引用第二分组的模式 当两者相等的时候才会进行匹配

l /(?\d{4})-(?\d{2})-(?\d{2})/

l /(?\d{4})-(?\d{2})-\k/

  1. replace

‘2018-09—07’.replace(/(\d{4})-(\d{2})-(\d{2})/,‘$1年$2月$3日’)

  1. RegExp.$[_1-9]

​表示字符串本身

5.转义

  1. 使⽤用\ 转义

  2. 需要转义的字符?

Tips:

当需要使用正则字符本身的时候就需要用转义字符

6.零宽断言(lookaround assertions)

  1. 也翻译成 环视

  2. 根据⽅方向的不不同,分为lookahead 和lookbehind 3. 根据判定原则,分为 肯定 和 否定

  1. 惰性&贪婪

l 贪婪模式——在匹配成功的前提下,尽可能多的去匹配

l 惰性模式——在匹配成功的前提下,尽可能少的去匹配

l /.bbb/g.test(‘abbbaabbbaaabbb1234’) 4. /.?bbb/g.test(‘abbbaabbbaaabbb1234’)

根据样本选择匹配模式

l 贪婪模式⽤用于匹配优先量量词修饰的⼦子表达式

l 惰性模式⽤用于匹配忽略略优先量量词修饰⼦子表达式

8.修饰符&标志

  1. g → global

  2. i → ignoreCase

  3. m → multiline

  4. y → sticky

  5. u → unicode

  6. s → dotAll

9.使用方法

参考

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp#assertions

正则表达式方法总结