美文网首页
正则表达式RegExp-2020-01-02

正则表达式RegExp-2020-01-02

作者: 增商 | 来源:发表于2020-01-03 11:19 被阅读0次

    正则和字符串密切相关, 正则就是验证字符串的,我们可以定义一个字符串模型,然后把我们需要验证的字符串直接和我们定义的模型相匹配,找到符合我们预期的结果

    一: 创建方法

    • 字面量创建
      var reg = /abce/,
      str = "abceg";
      看定义的规则
    /abce/ //=>这里说明我定义规则abce 必须挨在一起,匹配上述规则
    reg.test(str) //=>true
    
    • 创建对象
      new RegExp("abc","mig")
    new RegExp("abc","mig") //=>属性事i m g稍后再做解释
    

    正常情况和非正常情况

    图片.png
    图片.png
    //同一个引用和不同引用,创建相同模式的正则,参数传正则
    var reg=/abc/i,
    str='abcd';
                
    // 去掉new 和不去掉new 区别
    var reg1 = new RegExp(reg);
    reg.abc='为reg加属性reg1是没有的';
    console.log(reg.abc);
    console.log(reg1.abc); //=>不同的人
                
    var reg1 = RegExp(reg); //=>同一个人,不同的引用而已
    console.log(reg1.abc);
    
    

    二: 修饰符属性参数讲解

    • i == ignoreCase
    • g == global 全局匹配
    • m == 多行匹配

    例子:ignoreCase

    var reg=/ab/;
    var str='AB'
    document.write(str.match(reg))
    
    图片.png
    //反之i
    var reg=/ab/i;
    var str='AB'
    document.write(str.match(reg))
    
    图片.png

    例子:global匹配
    这里用到字符串上面的match()方法

    var reg=/ab/ig;
    var str='ABABABABAB'
    document.write(str.match(reg))
    
    图片.png

    例子:m多行匹配
    不换行前,我需要全局匹配a匹配结果为两个

    图片.png
    若我需要匹配以什么开头,以a开头的呢?加^号即可
    图片.png
    //=>以a开头,以什么字母开头^
    var reg=/^a/g;
    var str='abcda'
    console.log("全局匹配"+ str.match(reg));
    document.write(str.match(reg))
    

    加换行符\n为什么还是一个a?

    图片.png
    图片.png

    m多行匹配

    指的就是开头和结尾,但为何加\n没有意义呢?是因为它认为在没有m多行匹配前,你加这个也没用,它还认为你这个是一行

    ------------------------------------------------------------------------31:10分前


    三: 表达式:[]

    表达式一个[]内的就是一个规则范围,当然是匹配一个
    假设:

    var reg=/[123456789][123456789][123456789]/g
    //=>代标范围,一个[]就代表一位数字范围;3位数字
    var str='12433hasjkd2343654o0124'
    console.log(str.match(reg));
    //=>124,234,365,124
    

    省略表达:

    var reg=/[0-9A-z][cd][d]/


    图片.png
    var reg=/[0-9A-z][cd][d]/ //=>看相邻的规则一位
    var str='askjdkasjdl32423cd'
    //=>3cd
    

    非表达式:

    []假设写在表达式里,意味着非,否定

    var reg=/[^a]/g
    var str='abcsakjsada'
    //=>b,c,s,k,j,s,d
    var reg=/[^a][^b]/g
    //=>bc,sa,kj,sa,da
    

    (|)或运算 => 相当于区间聊胜于无

    var r11=/(abc|bcd)[0-9]/g //表达式区间
    var str11='abc0'
    console.log(str11.match(r11));
    
    图片.png

    四: 元字符

    图片.png
    \w === [0-9A-z_] word
    \W === [^\w]
        var reg=/\was/g //=>w === [0-9A-z_]
        var reg1=/\Was/g
        var str='b*asd'
        console.log(str.match(reg1));
    
    图片.png
    图片.png
    • \s === [\t\n\r\v\f ] 加空格


      图片.png
    • \b === 单词边界


      图片.png
    • \t ===匹配真实有的内容\t
      图片.png
    • n === 回车


      图片.png
    • unicode 编码


      图片.png
    //4个0到4个f 区间
    var nic=/\u6211\u7231\u5b66\u4e60,\u5b66\u4e60\u7231\u6211imycode/g
    var str='我爱学习,学习爱我imycode nice'
    console.log(str.match(nic));
    
    

    一切字符: ALL

    var nic1=/[\u0000-\uffff]/g //=>一切字符 ALL
    var str='我爱学习,学习爱我imycode nice '
    console.log(str.match(nic1));
    

    一切字符: all

    var nic2=/[\d-\D]/g //=>一切字符 ALL
    console.log(str.match(nic2));
    
    图片.png

    . 点元字符匹配

    查找单个字符,除了换行和行结束符。


    图片.png
    var dian=/./g
    // . === [^\r\n]
    console.log(str.match(dian));
    

    相关文章

      网友评论

          本文标题:正则表达式RegExp-2020-01-02

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