美文网首页
正则的一些用法

正则的一些用法

作者: 蜗牛Coming | 来源:发表于2018-08-23 14:06 被阅读0次

    首先,一些基本的:

    \d 匹配一个数字,等价于[0-9]
    \D 匹配一个非数字,等价于[^0-9]
    \w 匹配一个单字字符(字母、数字、下划线),等价于[a-zA-Z0-9_]
    \W 匹配一个非单字字符,等价于[^a-zA-Z0-9_]
    .(小数点) 匹配除换行符之外的任意一个字符
    ? 匹配前一个表达式0次或1次,等价于{0,1}
    + 匹配前一个表达式1次或多次,等价于{1,}
    * 匹配前一个表达式0次或多次,等价于{0,}
    (x) 匹配‘x’并记住匹配项,()称为捕获括号

    几个不常见的:

    (?:x) 匹配‘x’但不记住匹配项,?:称为非捕获符号
    x(?=y) 匹配‘x’仅仅当‘x’后面跟着‘y’,正向肯定查找,但不记住()里面的匹配项
    x(?!y) 匹配‘x’仅仅当‘x’后面不跟着‘y’,正向否定查找,但不记住()里面的匹配项

    demo:

    //把str_demo转化成一个[aaa123,bbb456,ccc789,ddd129]的数组
    var str_demo = '123aaa ,456bbb , 789ccc ,    129ddd';
    //定义一个匹配前后空格,中间是‘,’的正则;
    var pattern = /\s*,\s*/;
    //利用正则的split方法将字符串按匹配的正则分割成字符串数组
    var strArr = str_demo.split(pattern);
    //定义一个匹配前面是数字,后面是字母的正则;
    pattern = /(\d+)([a-z]+)/
    var j,len;
    var newArr = [];
    for(j = 0,len = strArr.length; j<len; j++){
        //$1、$2分别是匹配到的第一个小括号、第二个小括号的内容
        newArr.push(strArr[j].replace(pattern,'$2$1'))
    }
    console.log(newArr);
    //[aaa123,bbb456,ccc789,ddd129]
    

    ?:的用法

    //?:的用法
    var str_demo = '123aaa ,456bbb , 789ccc ,    129ddd';
    //定义一个匹配前后空格,中间是‘,’的正则;
    var pattern = /\s*,\s*/;
    //利用正则的split方法将字符串按匹配的正则分割成字符串数组
    var strArr = str_demo.split(pattern);
    //定义一个匹配前面是数字,后面是字母的正则;
    //给一个括号加上?:,使其不捕获第一个括号里面匹配到的内容
    pattern = /(?:\d+)([a-z]+)/
    var j,len;
    var newArr = [];
    for(j = 0,len = strArr.length; j<len; j++){
        //$1、$2分别是匹配到的第一个小括号、第二个小括号的内容
        newArr.push(strArr[j].replace(pattern,'$1'))
    }
    console.log(newArr); //[aaa,bbb,ccc,ddd]
    

    \1的用法

    \1 匹配的是 所获取的第1个()匹配的引用
    \2 匹配的是 所获取的第2个()匹配的引用

    //\1的用法
    //匹配两个重复的数字的正则
    var reg1 = /(\d)\1/;
    // console.log(demo_n.search(reg_n))
    console.log(reg1.test('88')); //true
    console.log(reg1.test('89')); //false
    console.log('88'.search(reg1)); //0
    console.log('89'.search(reg1)); //-1
    console.log(reg1.exec('88')); // ["88", "8", index: 0, input: "88", groups: undefined]
    console.log(reg1.exec('89')); //null
    console.log('88'.match(reg1)); //["88", "8", index: 0, input: "88", groups: undefined]
    console.log('89'.match(reg1)); //null
    //匹配一个数字后面两个重复的字母的正则
    var reg2 = /(\d)([a-z])\2/;
    console.log(reg2.test('8cc')); //true
    console.log(reg2.test('8ab')); //false
    

    相关文章

      网友评论

          本文标题:正则的一些用法

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