【javascript笔记】正则表达式

1、转义符号:\

     \n:换行, 只能console.log识别

     \r:行结束符

          正常情况下一个回车为:\r\n

        \t:  制表符,缩进

                多行字符串:

      var test = “\

      <div></div>\

      <span></span>\

     “;

 

2、创建方式

  直接量: var reg = /abc/i;

  new RegExp:   var reg = new RegExp('abc','m');

  var reg = new RegExp(reg1);  //reg1也是正则表达式

3、修饰符

     i 忽略大小写

     g 全局匹配

     m 执行多行匹配

    var reg = /^a/gm;

    var str = “asvd\na”;

    可匹配到两个a

4、reg.test(str);       true false

     str.match(reg);   返回数组,没有匹配就是null

5、表达式

    [] 匹配一个字符

   [123]: 符合123其中一个的一位

  var reg = /[1234567890][1234567890][1234567890]/g;

  var str = 12309u98723sdfjhjdshjfhjds;

  str.match(reg);   ---> [123, 987]

[0-9A-z]

[^123]  ^为非 不是 123

(abc | dfg)  abc或dfg

6、元字符

\w ===[0-9A-z_]

\W===[^\w]

\d ===[0-9]

\D ===[^\d]

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

\S ===[^\s]

\b===单词边界: var str = 'abc ced fgh';  var reg = /\bcde\b/g;    -->['ced']

var reg = /\tc/g;        var str = 'abc/tcdefgh';  -->[' c']

\B===非单词边界

. ===[^\r\n]

[\w\W] 这代表一切

7、量词

n+     匹配1到正无穷   var reg= /\w+/g;  var str = "abc";   -->["abc"]

n*     匹配0到正无穷   var reg= /\w*/g;  var str = "abc";   -->["abc", ""]

n?      匹配0-1个

n{X}    匹配x个个     var reg= /\w{3}/g;  var str = "abc";   -->["abc"]

n{x,y}   匹配x-y个,包括y,当{x, } y不写时,表示正无穷

n$     n结尾

8、^ :

   $ :

检验一个字符串首尾是否含有数字

var reg = /^\d[\s\S]*\d$/g

var str = '1ghghg5';

Reg.test(str);  --> true

 

9、方法

(1)reg.exec():

                      

 2)reg.lastIndex 返回下一个reg.exec()的index的值,可以修改reg.exec()返回的index的值

                               

 (3)

                

                

                        “a”  “b”  这两个分别是第一个子表达式的内容

 

(4) str.search(reg) : 返回匹配到的字符串的位置,如果找不到,返回 -1

    

(5)str.splict(reg): 根据正则表达式分割字符串

  

当正则表达式是是子表达式时,会返回分割的字符

 

 (6)str.replace(reg);

     replace 里面不是正则表达式,只能匹配一个

 

    aabb  变成 bbaa

  var reg= /(\w)\1(\w)\2/g;

  var str = ‘aabb’;

  str.replace(reg, ‘$2$2$1$1’);   $1第一个子表达式的内容 $2第二个子表达式的内容

  str.replace(reg, function($, $1, $2) {    //参数:1全局  23同上

    return $2 + $2 + $1 + $1 + $1 + ‘abc’;     //返回的是 bbaaaabc

  });

 

  the-first-name  变成 theFirstName

    var reg = /-(\w)/g;

    var str = “the-first-name”;

    str.replace(reg, function($, $1){

      return $1.toUpperCase();

    })

 

//正向预查,正向断言

var str = “abaaaa”;  

var reg = /a(?=b)/g;   //只找后面跟着 b a

var reg = /a(?!b)/g;   //找后面不跟着 b a

 

贪婪匹配:

var str = “aaaaa”;

var reg = /a+/g;

非贪婪匹配:

var reg = /a+?/g;    //在量词后面加上 ?

var reg = /a??/g;   //能取 0 不取1

 

var str = “aaaaaaaaaabbbbbbbbbbbcccccccccccccc”;

var reg = /(\w)\1*/g;

str.replace(reg, ‘$1’);   ---> ‘abc’

 

var str = ‘100000000’;   --> 100.000.000

var reg = /(?=(\B)(\d{3})+$)/g;

str.replace(reg, “.”);

posted @ 2020-02-11 22:05  shumeihh  阅读(185)  评论(0编辑  收藏  举报