美文网首页
javascript正则表达式

javascript正则表达式

作者: 叶不归宿 | 来源:发表于2018-08-30 18:22 被阅读0次

    正则表达式,又称规则表达式,英语:RegularExpression,在代码中常简写为regex,regexp,RE
    作用:快速查找匹配的字符串内容

    创建正则表达式

    1. var reg = new RegExp();

    var str = "你NBEST";
    var reg = new RegExp('NB');
    console.log(reg.test(str)); //true
    

    2.var reg = /N/;

    console.log(reg.test(str)); //true
    
    正则常用函数

    1.test()
    判断字符串中是否有符合正则规则的内容,返回值是bool类型
    2.exec()
    查找到符合正则表达式的字符串所在的源字符串的位置下标

    字符串常用的函数

    replace,match,search

    match与exec返回值类似,归属不同

    正则元字符

    1.全局查找g

    g:从头查到尾(影响replace, exec)

    var str = "hello";
    var reg = /l/;
    var val = str.replace(reg,'m');
    console.log(val)  //hemlo
    
    //全局查找
        var str = "hello";
        var reg = /l/g;
        var val = str.replace(reg,'m');
        console.log(val)  //hemmo
    

    获得字符串所有空格个数

            var str = "你 好 吗 ?";
        var reg = / /g;
        var val = reg.exec(str);
        var val1 = reg.exec(str);
        console.log(val)
        console.log(val1)
    
    image.png
    
        var str = "你 好 吗 ?";
        var reg = / /g;
        var num = 0;
        while(reg.exec(str)){
            num++;
        }
        console.log(num) //3
    
    2.不区分大小写 i

    i和g可以共存

    //不区分大小写
        var str = "hello";
        var reg = /l/ig;
        var val = str.replace(reg,'你好');
        console.log(val);
    
    3.任意字符 .
        //任意字符
        var str = "helloele"
        var reg = /e./g;    //查找2个字符(连起来的2个字符),一个是e,另一个任意
        console.log(str.replace(reg,'好'));   //h好lo好e
    
    4. 0个或者1个字符 : ?
    ?修饰的是前一个字符:前一个字符存在或者不存在
    
            var str = "hello";
        var reg = /e?/g;
        var val = str.replace(reg,'m');
        console.log(val);  //mhmmlmlmom
    

    从h之前开始查找,,e与h之间,字符与字符之间有一块区域(内存问题)

    5. 代表0个或者n个 : *

    *同样是修饰前一个字符,存在0次或者n次

    ?,*一般不做替换,做查找
    6代表1个或者N个 :+

    +修饰前一个字符

    var str = 'hello';
    var reg = /e.+/g;    //e后面跟0个或者多个.
    console.log(str.replace(reg,'m'));   //hm
    
    7.重复的范围:{}

    修饰{}前面的字符
    {3}代表前面的字符必须有连续的3个
    {1,3}代表前面的字符最少有一个,最多有3个
    {2,}代表最少2个,最多n个

    var str = "heeeello";
    var reg = /e{3}/g;
    //var reg = /e{1,3}/g;   // hmmllo
    /var reg = /e{2,3}/g;  //hmello   先判断最大的数量,再判断最小的
    console.log(str.replace(reg,'m'))  //hmello
    
    8.或规则: |

    var reg = /h|l/g

    9.或规则:[]

    []里的内容不允许有空格,逗号
    空格,逗号会被当成或的一种
    var reg = /[hel ]/g

    var reg = /[a-z]/g   //a到z的所有小写
    var reg = /[a-zA-Z]/g    //大小写
    var reg = /[0-9]/g 
    
    汉字的正则

    var reg = /[\u4e00-\u9fa5]//g //汉字编码。包含了所有的汉字

    10.以什么开头:^

    var reg = /^he/g; //以he开头

    11.以什么结尾:$

    var reg = /o$/g; //以o结尾

    案例
    判断一个字符串是否是6位长度的数字
    /^[0-9]{6}$/g //加上开头和结尾

    12.取反规则 :^

    取反规则要和[]一起用

    //去掉非数字的字符
    var str = "123helo%$";
    var reg = /[^0-9]/g;
    console.log(str.replace(reg,'9'))   //123999999
    
    13.小括号规则

    var reg = /(he){3}/g; //he整体出现3次,{3}修饰的是()括起来的整体

    总结
    • 修饰整个正则表达式的内容,g和i
    • 修饰前一个或者前一个小括号括起来的内容,?,+,*,{}
    • 其他: .,|,[],^,$, 取反, ()

    正则需要多练习

    转义字符

    特点:以“\”开头
    \n,\d,\w
    \d 等价于 [0-9]
    \D : [^0-9]
    \w : [^A-Za-z0-9_]

    练习题

    1.连续2个相同的数字
    2.连续3个或3个以上 相同的 字符
    3.正整数
    4.负整数
    5.整数
    6.正浮点数
    7.负浮点数
    8.浮点数

    参考:
    正则表达式练习(js)
    正则\1\2和\1的理解

    相关文章

      网友评论

          本文标题:javascript正则表达式

          本文链接:https://www.haomeiwen.com/subject/lbzrwftx.html