正则表达式

一、正则表达式

        1、什么是正则表达式?

                (1)是描述字符串结构的语法规则

                (2)适用于匹配字符串中字符串组合的模式

                (3)是一个对象

        2、特点

                (1)非常灵活

                (2)逻辑性非常强

                (3)以非常简单的方式对字符串进行复杂的控制

        3、创建正则表达式

                (1)使用字面目录

                        var 变量名 = / 表达式 /

                (2)使用RegExp构造函数

                        var 变量名 = RegExp(/表达式/)

                或

                        var 变量名 = new RegExp(/表达式/)

        4、正则表达式的使用

                (1)test()方法:返回boolean值,true表示符合正则规则,false表示不符合正则规则

                        正则对象.test(被验证的字符串)

                (2)模式修饰符:/表达式/[switch]

                        switch:是模式修饰字符,是可选的,通过它可以对正则进行进一步的设置

                        g:表示全局匹配

                        i:忽略大小写

                (3)边界符:

                        ^:表示匹配首行的文本(表示以谁开头)

                        $:表示匹配行尾的文本(表示以谁结尾)

                (4)预定义字符:

                        . :除了'\n'之外的任意一个字符

                        \d:表示0~9之间的任意数字。等价于[0-9]

                        \D:表示匹配0~9以外的字符。等价于[ ^0-9]

                        \w:表示匹配任意字母、数字和下划线。等价于[a=zA=Z0-9]

                        \W:除所有字母、数字和下划线以外的字符。等价于[ ^a=zA=Z0-9]

                        \b:单词分界符

                        \uhhhh:匹配汉字

                        \s:匹配空格(包括换行符、制表符、空格符等),相当于[\t\r\n\v\f]

        match(正则表达式)方法:是String对象的方法,用来截取符合正则表达式规则的子串,返回值是(字符串)数组

        强调:转义字符 ' \ ' ,若要输出反斜杠,要使用连续两个'\'

        (5)字符范围示例

                [cat]:匹配字符集合中的任意一个字符c、a、t

                [ ^cat]:匹配除c、a、t以外的字符

                [A-Z]:匹配字母A -Z范围内的字符

                [ ^a-z]:匹配字母a~z范围外的字符

                [a-zA-Z0-9]:匹配大小写字母和0~ 9范围内的字符

                [u4e0-\u9fa5]:匹配任意一个中文字符

        字符组合:如果允许用户输入英文字母(不区分大小写)、数字、短横线-、下划线_的正则情况。

                var reg= /^[a-zA-Z0-9_ -]$/;

        (6)量词

                {m,n}:表示{}之前的字符可以出现m~n次

                {n}:表示{}之前的字符可以出现n次

练习:验证西安的座机号码,定义正则表达式测试用户输入的座机号是否正确

<style>
    .ok {
        color: green;
    }

    .fail {
        color: red;
    }
</style>

<body>
    <input type="text" id="number"><span id="msg"></span>

    <script>
        //1、验证西安的座机号码,定义正则表达式测试用户输入的座机号是否正确
        var reg = /^(026)\d{8,8}$/;
        var number = document.querySelector('#number');
        number.onblur = function () {
            let span = document.querySelector('#msg');
            if (reg.test(this.value)) {
                span.classList.remove = 'fail';
                span.innerHTML = '电话号码格式正确';
                span.classList.add('ok');
            } else {
                span.classList.remove = 'ok';
                span.innerHTML = '电话号码格式错误';
                span.classList.add('fail');
            }
        }
    </script>
</body>

二、正则表达式的量词符和括号符

        1、量词符

                (1):匹配?之前的字符零次或一次。例如:hi?t ---> ht hit

            注意:exec(字符串):是正则表达式对象的方法。返回值类型是数组。

                (2)+:匹配+前面的字符一次或多次。例如:bre+ad ---> bre...ad

                (3)*:匹配 *前面的字符零次或多次。例如:bre *ad --->brad、bre....ad

                (4){n}:匹配{}前面的字符可以匹配n次。例如:hi{3}t ---> hiiit

                (5){n,}:匹配{}前面的字符最少n次。例如:hi{3}t ---> hiiiii....t

                (6){n,m}:匹配{}前面的字符n~m次。

        2、括号字符:改变限定符的范围

                (1)改变限定范围之前:catch|er

                        匹配结果:catch、er

                (2)改变限定范围之后:cat(ch|er)

                        匹配结果:catch、cater

                (3)分组

                        分组前:abc{2} --->表示{}前面的c要出现两次

                        分组后:a(bc){2} --->表示{}前面的bc要出现两次

三、正则表达式的捕获与非捕获

        1、捕获:使用小括号可以进行分组,当小括号后面有量词符时,就表示对整个组进行操作。

	    let reg=/a(bc){2}/;  //表示4位数字,美味数字都是0~9
        let s1="abcc";

        2、进行字符串的替换:replace结合正则表达式实现

	    var reg=/(\w+)\s(\w+)\s(\w+)/gi;
        var str='I Heat You';
        // console.log(reg.test(str));
        console.log(reg.exec(str));
        let newStr=str.replace(reg,'$3 $2 $1');
        console.log(newStr);

四、贪婪匹配和懒惰匹配

        1、贪婪匹配:表示匹配尽可能多的字符。是正则表达式的默认匹配方式

        2、懒惰匹配:表示匹配尽可能少的字符。遵循 ‘?’ 符号来实现

        var str='webWEBWebwEB';
        var reg1=/w.*b/gi;  //贪婪匹配
        console.log(reg1.exec(str));

        var reg2=/w.*?b/gi; //懒惰匹配,表示只要有一次匹配成功即可,不会继续进行匹配
        console.log(reg2.exec(str));

五、正则表达式的优先级(优先匹配)

        一级:\ 转义字符

        二级:() 、[ ]

        三级:*、+、?、{n}、{n,}、{m,n}

        四级:^ 、$ 、\任何元字符、任何字符

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值