正则,捕获

"本文详细介绍了正则表达式的基本概念和特殊元字符,包括d、D、w、W等,并提供了量词元字符和修饰符的使用说明。通过实例演示了正则在手机号、身份证号验证以及年龄范围匹配等方面的应用。同时,讲解了正则的贪婪性和懒惰性,并给出捕获方法的示例。"

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则:一种专门用来处理字符串的规则

处理:匹配,捕获

有一段正则和一个字符串,匹配的意思是看看这个字符串是否符合这个正则定义的规则, 有一段正则和一个字符串,捕获的意思是把这个字符串中符合这个规则的部分获取到

特殊元字符:

\d 代表数字

\D 代表除了数字以外的其他字符

\w 代表数字或字母或下划线

\W 代表数字字母下划线以外的字符

^ 代表以什么开头 在正则的最前面

$ 代表以什么结尾 在正则的最后面

[a,b] // a或b /^[xy]$/:要不是以x开头结尾,要不就是以y开头结尾

[^ab] //除了ab以外的其他字符

[a-z] //大白话就是小写字母

[A-Z] 代表大写字母

[a-zA-Z] 代表所有字母

a|b a或b

. 代表除了换行以外的其他字符 若在[]里面就代表点本身

() 提升优先级 分组(捕获时用到的概念)

/^11|12$/ 11开头或者12结尾

/^(11|12)$/ 要么11,要么12

量词元字符(量:数量)用在要修饰的字符串的后边

? /\d?/ 代表前面的字符出现0或1次

+ 代表前面的字符出现1到多次

* 代表前面的字符出现0到多次

{n} 代表前面的字符出现n次

{n,} 代表前面的字符出现n到多次

{n,m} 代表前面的字符出现n到m次

修饰符

g global 全局匹配 最多用于捕获,匹配很少用

i ignoreCase 忽略大小写

m multiline 多行匹配

box.innerHTML=' \d 在正则中表示数字的意思' // \d在字符串中 表示把d字符串转义成d字符本身

box.innerHTML=' \\d 在正则中表示数字的意思' // \\d在字符串中 前面的\把后面\的转义成\本身

习题

正则手机号

<body>

<h1 id="box"></h1>

<input type="text"placeholder="输入手机号"id="inp">

<button id="btn">登录</button>

</body>

</html>

<script>

// 开头3-9 11位

// /\d{11}/ 只要字符串中有11位即可

// /^\d{11}$/ 以这11位开头,以这11位结尾

let reg9 = /^1(56|89|82|31|32)\d{8}$/

btn.οnclick=function(){

let val= inp.value;

let bol=reg9.text(val)

if (bol==false){

alert=("手机号不合法")

}else{

console.log(val);

}

}

</script>

正则身份证号

let reg10 = /^\d{17}(\d|X)$/

btn.οnclick=function(){

let val= inp.value;

let bol=reg10.text(val)

if (bol==false){

alert=("身份证不合法")

}else{

console.log(val);

}

}

正则取18到65岁年龄段

let reg11 = /^1[8-9]|[2-5]\d|6[0-5]$/

密码只能是 数字,字母 _ . + - @ $组成的8到15位字符

let res = /^[+\-]?(\d|[1-9]\d+)(\.\d+)?$/

let res2 = /^\d|[a-zA-Z]|\_|\.|\+|\-|\@|\${8,15}$/

let res3 = /^(?=.*[A-Z]).{8,15}$/

---------------------------------------------------------------------------------------------------------------------------------

捕获

<script>

// 捕获的贪婪性 一次捕获,尽可能多的去获取内容 解决贪婪:就在量词后面加问号

// 捕获的懒惰性 只捕获一次 解决懒惰:使用修饰符 g,并输出两次

var str = '珠峰2009珠峰2022';

var reg=/\d+/g; // reg.lastIndex 代表的就是当次匹配或者捕获对应字符串的开始索引

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

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

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

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

RegExp.prototype.execAll=function(str){

this.lastIndex=0; // 防止这个正则的lastIndex不是0而导致获取的内容不对

let ary = []

let res = this.exec(str)

while(res){

ary.push(res[0])

res = this.exec(str)

}

return ary

}

console.log(reg.execAll(str));

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值