正则表达式的例子

作者: 椰果粒 | 来源:发表于2018-08-01 18:32 被阅读0次

    参考:
    https://juejin.im/post/5ac1f1106fb9a028be362731

    1、检验字符串首尾是不是数字(首或者尾有就行)

    var reg = /^\d|\d$/g;
    

    2、首尾都是数字:首尾以数字结尾,中间匹配任意字符

    var reg = /^\d[\w\W]*\d$/g;
    

    3、找出所有的aabb形式

    var reg = /(\w)\1(\w)\2/g;
    var str = "cddeedd";
    console.log(str.match(reg)); // ['ddee']
    

    4、将所有的aabb形式替换成abab形式

    var str = "ccddhhgg";
    var reg = /(\w)\1(\w)\2/g;
    console.log(str.replace(reg,"$2$2$1$1"));
    console.log(str.replace(reg, function($0, $1, $2){  // 分别代表全局,第一个子表达式,第二个子表达式
        return $2 + $1 + $2 + $1;
    }))
    

    5、驼峰命名
    利用子表达式,匹配出-x(-和要转成大写的字符)

    var reg = /-(\w)/g;
    var str = 'hello-world-haha-heng';
    var res = str.replace(reg,function($0,$1){
        return $1.toUpperCase();
    })
    console.log(res); //helloWorldHahaHeng
    

    6、找出ab相连的表达式中的a,替换成%
    方法:正向断言

    var str = 'abaaaa';
    var reg = /a(?=b)/g;    // 问号后面是b的
    var reg = /a(?!b)/g;    // 问号后面不是b的
    console.log(str.replace(reg,"*"));  // *baaaa
    

    7、千位分隔符
    方法:正向断言,从后往前$,匹配不是空位的位置加逗号

    var str = "123123345";
    var reg = /(?=(\B)((\d){3})+$)/g;
    var res = str.replace(reg,',');
    console.log(res);
    

    8、字符串去重

    var str = "aaabbbdddsss";
    var reg = /(\w)\1*/g;
    console.log(str.replace(reg,"$1"));
    

    9、去除字符串的空格
    最后一个\b表示匹配单词边界,比如'o ',被替换成o了

    去除所有空格
    "  hello world  ".replace(/\s/g,"")    // "helloworld"
    去除开头和结尾的空格
    "  hello world  ".replace(/^(\s*)|(\s*)$/g,"")    //"hello world"
    去除中间的空格,保留两边的空格
    "  hello world fu jing  wen ".replace(/(\S)\s+(\b)/g,"$1")    //"  helloworldfujingwen "
    

    10、串中是否包含数字

    var str = "hjadh";
    var reg = /\d/g;
    console.log(reg.test(str)); // false
    

    11、是否包含连续重复的字母

    var str = "aabcd";
    var reg = /([a-zA-Z])\1/g;
    console.log(reg.test(str)); // true
    

    12、字符串是否以元音字母结尾

    // 字符串是否以元音字母结尾
    var str = "aabcdu";
    var reg = /[aeiou]$/gi;
    console.log(reg.test(str)); // true
    

    13、是否包含连续出现三次的数字,如果有,就返回最新出现的,否则返回false

    function containNum(str){
        var reg = /\d{3}/g;
        var res = str.match(reg);
        if(res){
            var result = res.slice(res.length-1);
            return result
        }else{
            return false;
        }
    }
    var str = "12345abc";
    console.log(containNum(str));
    

    14、判断是否符合某种格式 xxx-xxx-xxxx(x为数字)

    var str = "123-451-423";
    var reg = /^(\d{3}-){2}\d{4}$/g;
    console.log(str.match(reg));
    

    15、判断是否符合USD格式
    以$开头,每隔3位有分隔符,如果有小数,小数位数为2

    var str = "$1,234.23";
    var reg = /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/g;
    console.log(str.match(reg));
    

    16、获取url的参数

    var url = 'https://www.google.com.hk/search?name=fujingwen&age=23&sex=female';
    // var url = location.href;
    function getPar(url){
        var obj = {};
        var reg = /\??(\w+)=(\w+)&?/g;
        url.replace(reg, function($0,$1,$2){
            obj[$1] = $2;
        })
        console.log(obj)
    }
    getPar(url);
    
    // 验证邮箱
    var reg = /^([a-zA-Z0-9_\-])+@([a-zA-Z0-9_\-])+(\.[a-zA-Z0-9_\-])+$/;
    
    // 验证身份证号码,15位或者18位,15位全是数字,8位中前17位是数字,最后一位是数字或者x
    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(x|\d|X)$)/;
    
    // 匹配汉字
    var reg = /^[\u4e00-\u9fa5]*$/g;
    

    相关文章

      网友评论

        本文标题:正则表达式的例子

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