正则表达式(二)

量词符

量词符:用来设定某个模式出现的次数。

在这里插入图片描述

var reg = /^a*$/;    // * 相当于>=0,可以出现0次或很多次
var reg = /^a+$/;    // + 相当于>=1,可以出现1次或很多次
var reg = /^a?$/;    // ? 相当于1||0,可以出现0次或1次
var reg = /^a{3}$/;    // {3}就是重复a字符3次
var reg = /^a{3,}$/;    // {3,}就是重复a字符 大于等于3次
var reg = /^a{3,16}$/;    // {3,16}就是重复a字符 大于等于3次 小于等于16次

【案例演示】:允许用户输入6~16位的用户名

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

var reg = /^[a-zA-Z0-9_-]{6,16}$/;

括号字符

1.改变限定符的范围

正则表达式:catch|er
可匹配的结果:catch、er

正则表达式:cat(ch|er)
可匹配的结果:catch、cater

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

分组前
正则表达式:abc{2}
可匹配的结果:abcc

分组后
正则表达式: a(bc){2}
可匹配的结果:abcbc

2.捕获与非捕获

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

3.贪婪匹配和懒惰匹配

贪婪匹配:匹配尽可能多的字符

懒惰匹配:匹配尽可能少的字符

正则匹配默认是贪婪匹配,通过 “?”符号实现惰性匹配。

var str = "webWEBWebwEb";

var reg1 = /w.*b/gi;    //贪婪匹配

console.log(reg1.exec(str));    //返回值为数组,数组中包括匹配的字符串、索引、输入的字符串

var reg2 = /w.*?b/gi;    //懒惰匹配

console.log(reg2.exec(str));

4.反向引用

反向引用:获取存放在缓存区内的子表达式的捕获内容。

var str = "13335 12345 56668";

var reg3 = /(\d)\1\1/gi;

console.log(str.match(reg3));

5.正则表达式的优先级

正则表达式优先级:正则表达式各种符号的优先级,由高到低排列。

在这里插入图片描述

6.【案例】身份证号码的验证

<body>
    <form id="form">
        身份证号:<input type="text" name="card">
    </form>
    <div id="result"></div>
    <script>
        let result = document.querySelector("#result");
        let inputs = document.getElementsByTagName("input");
        inputs.card.addEventListener("blur",function(){
            // 创建正则表达式对象
            let idCard = /^\d{15}$|^\d{17}([0-9]|X)$/;

            //获取用户输入的身份证号码
            let userId = inputs.card.value;

            //进行验证
            if(idCard.test(userId)){
                result.innerHTML = "验证通过";
            }else{
                result.innerHTML = "身份证号码有误";
            }
        })
    </script>
</body>

String类中的方法

1.match()

match()方法:根据正则匹配出所有符合要求的内容匹配成功后将其保存到数组中,匹配失败则返回false

var str = "It's is the shorthand of it is";

var reg1 = /it/gi;

console.log(str.match(reg1));

var reg2 = /^it/gi;

console.log(str.match(reg2));

var reg3 = /s/gi;

console.log(str.match(reg3));

var reg4 = /s$/gi;

console.log(str.match(reg4));

输出结果如下:

在这里插入图片描述

2.search()

serach()方法:返回指定模式的字串在字符串中首次出现的位置,相对于indexOf()方法来说功能更强大。

var str = "123*abc.456";

console.log(str.search("/.*/"));

3.split()

split()方法:根据指定的分隔符将一个字符串分割成字符串数组,其分割后的字符串数组不包括分隔符。

var str = "test@qq.com";

var reg = /[@|.]/;

var arr = str.split(reg);

console.log(arr);    //输出结果为[ 'test', 'qq', 'com' ]

4.replace()

replace()方法:字符串替换,参数可以是字符串或正则表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值