正则表达式

概念

正则表达式可以用来匹配字符串,可以实现字符串的截取或者按规则替换和验证字符串的内容

在js中创建正则表达式对象

var reg = new RegExp("123");
var reg = /123/;//简写形式

正则表达式语法

var str = "123";
        var reg = /123/;
        //与str匹配,返回布尔值,相同返回true,不同返回false
        var result1=reg.test(str);//true
        //与str匹配,返回匹配值,相同返回数组,下标[0]是匹配值,不同返回null
        var result2=reg.exec(str);//'123'
        console.log(result1);
        console.log(result2);
var str1 = "x";
        var str2 = "2b"
        var reg = /[a-z]/;//[]表示匹配的范围,用-表示连接范围,[a-z]表示范围是一位的小写字母
        var result1=reg.test(str1);//true
        var result2=reg.exec(str1);//'x'
        console.log(result1);
        console.log(result2);
        var result3=reg.test(str2);//true,没有限制的情况下会跟字符串全部内容匹配,只要有一个符合就算对
        var result4=reg.exec(str2);//'b',说明只匹配一位
        console.log(result3);
        console.log(result4);
var str1 = "b";
        var str2 = "2b"//哪怕是"cb"结果也是错的
        var reg = /^[a-z]$/;//以一个小写字母开头,以一个小写字母结尾,将匹配对象的位数限制在了一位,超过一位就是错的
        var result1=reg.test(str1);//true
        var result2=reg.exec(str1);//'b'
        console.log(result1);
        console.log(result2);
        var result3=reg.test(str2);//false,只匹配一位,且必须是小写字母,str2有两位
        var result4=reg.exec(str2);//null
        console.log(result3);
        console.log(result4);
        var reg1 = /^[a-z][0-9]$/;//以一个小写字母开头,以一位数字结尾
        var str3="c3"//"c34"就是错的
        var result5=reg1.test(str3)
        var result6=reg1.exec(str3)
        console.log(result5)//true
        console.log(result6)//'c3'
var reg1 = /^[a-z]{2}$/;//{2}表示匹配两位,有^$就必须是两位
        str1="ac";//"acc"或者"a"都是错的,如果没有^$的话"acc"就是对的
        var result1=reg1.exec(str1);
        console.log(result1);//'ac'

        var reg2 = /^[a-z]{1,3}$/;//匹配1到3位
        str2="acc";//"a"或者"ac"都是对的
        var result2=reg2.exec(str2);
        console.log(result2);//acc
            \d   数字
            \D   非数字

            \w   数字,字母,下划线
            \W   非 数字,字母,下划线

            \s   空格
            \S   非空格

            .    非换行
var reg1 = /^[a-z0-9]{2}$/;//想扩大范围就直接加
        str1="2b";
        var result1=reg1.exec(str1);
        console.log(result1);//'2b'

        var reg2 = /^[a-z0-9A-Z_]{1,5}$/;
        str2="a9C_";
        var result2=reg2.exec(str2);
        console.log(result2);//'a9C_'

        var reg3 = /^\w{1,5}$/;//用\w表示数字字母下划线
        str3="a9C_";
        var result3=reg3.exec(str3);
        console.log(result3);//'a9C_'
        var reg = /^\s$/;//表示一个空格或换行
        var str = " ";//如果"  "两个空格就是错的,因为\s只表示一个空格。改成\s+就是对的
        var result = reg.test(str);
        console.log(result);//true
        var reg = /^[0-9]{1,}$/;//一位到多位,/[0-9]+/也是一样的效果,+这种更常用
        var str = "13216564984";
        var result = reg.test(str);
        console.log(result);//true
        
        var reg = /^\d+$/;//数字可以用\d代替
        var str = "13216564984";
        var result = reg.test(str);
        console.log(result);//true
var reg = /^\d?$/;//?表示0位到1位,即可有可无,总体表示0位或一位数字
        var str1 = "";
        var result1 = reg.test(str1);
        console.log(result1);//true
        var str2 = "1";//"12"就是错的
        var result2 = reg.test(str2);
        console.log(result2);//true
var reg = /^\d*$/;//*表示0到正无穷
        var str = "132165649844491";//可以一直写下去
        var result = reg.test(str);
        console.log(result);//true
        var reg = /^.$/;//除了什么都不输入和输入换行,输入什么都行
        var str = " ";//""什么都不输入和\n换行是错的," "空格是对的
        var result=reg.test(str);
        console.log(result);//true
var reg = /^\.$/;
    /*除了一些有意义的字符如\d,\s,\w等,\就是转义字符,后面的字符会失去原有的意义
    如\.就是一个字符'.'
    */
        var str = " ";//.不再发挥原有的效果
        var result=reg.test(str);
        console.log(result);//false

邮箱验证

var str = "ben_10044@163.com";
        var reg = /^\w{3,18}@\w{2,8}\.com$/;
        if(reg.test(str)){
            console.log("验证成功");
        }else{
            console.log("验证失败");
        }

字符串替换

var str="123abc456DEF";
        var reg=/[a-z]/gi;
        //g是全局匹配,i是不区分大小写匹配,没有写g就只匹配一个
        //也可以写成[a-zA-Z]g
        //也不要加^$
        var result=str.replace(reg,"");//将符合reg的内容替换成空
        console.log(result);//123456

截取字符串

var str="2022-10-25";
        var reg=/^(\d{4})-(\d{2})-(\d{2})$/;
        /*
        exec返回的是一个数组,如果只是\d{4}-\d{2}-\d{2},那么返回一个只有一个元素的数组
        如果用()分组,就能分成若干个元素
        */
        var result=reg.exec(str);
        console.log(result[0]);//2022-10-25
        console.log(result[1]);//2022
        console.log(result[2]);//10
        console.log(result[3]);//25
posted @ 2022-10-25 17:50  ben10044  阅读(6)  评论(0编辑  收藏  举报