正则,从入门到精通

1:正则要么匹配字符,要么匹配位置

2:可以使用括号捕获数据。可以在api中分组引用

3:横向模糊匹配是指 使用量词表示非固定的字符  /ab{2,4}c/   => 'abb'  'abbb'   'abbbb'

4:纵向模糊匹配是指使用[abc] 表示可以是中括号中的某一个    /a[cbd]b/ =>   'acb' 'abb'   'adb'

5:范围表示法[0123456abcdef] =>[0-6a-f]

6:排除字符组  [^abc] 就是非abc   字符组开头是^表示取反。

7:其他字符组的简写   

   \d    ===   [0-9]

   \D  ===   [^0-9]     非数字

   \w  ===  [0-9a-zA-Z_]   数字字母下划线

  \W  ====   [^0-9a-zA-Z_]    非数字,非字母,非下划线

  \s   ====    [\t\v\n\r\f]   空格 ,水平制表符 垂直制表符,换行符,回车符,换页符

  \S   ===  [^\t\v\n\r\f]  非空白符

  . 通配符    除了换行符,回车符,行分隔符,段落分隔符外的其他字符

 如果想匹配任何字符[\d\D]   [\w\W]    [^]  [\s\S]

8:量词

  {m,} 至少m次

  ?等价于 {0,1} 至少1次

  {m}等价于{m} 出现m次

   + 等价于{1,} ,至少出现1次

   * 等价于 {0,}出现任意次

9:贪婪匹配和惰性匹配

     量词后面拼?表示惰性匹配

     {m,n}? 

     {m,}?

      ??

     +?

     *?

      

var regex = /\d{2,5}?/g;
var string = "123 1234 12345 123456";
console.log( string.match(regex) ); // => ["12", "12", "34", "12", "34", "12", "34", "56"]


10: 匹配位置

    有6个锚字符   ^ $ \b \B  (?=p) (?!p)

    ^  -----   开头

   $  -----     结尾

   \b  -----    单词边界  具体就是\w  和\W 之间的位置,包括\w 和 ^  ,\w 和$之间的位置

   \B  --- --   非单词边界 具体就是\w与\w ,\W与\W,\W与^,\W与$之间的位置。

   (?=p)     其中p是一个子模式,即p前面的位置

         比如(?=a)

     var result = "dayu".replace(/(?=a)/g, '#');

        console.log(result); // => "d#ayu"

     (?!p)    非 上述

   参考文章https://juejin.cn/post/6844903487155732494#heading-18

 

    

posted on 2021-10-18 17:03  冰love  阅读(70)  评论(0编辑  收藏  举报

导航