JS正则表达式之一些常用语法与方法

1.什么是正则表达式?

           正则表达式是用于匹配字符串中字符组合的规则,正则表达式也是对象。这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法。

2.正则表达式的语法和规则

2.1.创建正则表达式

       两种方式:自面量与构造函数 

//1.这是字面量
let regOne=/\d/
//2.这是构造函数
let regOne=new RegExp(/\d/)

2.2.正则表达式test()方法

       这个方法可以理解为,判断字符串是不是包含该表达式值,返回bool类型

例如:

//定义一个数字的正则表达式	
let reg=new RegExp(/\d/)
//定义一个随机字符串
let str="abcdef234"
//用test方法判断str字符串是否包含reg表达式
let res=reg.test(str)
//由于\d表示是数字,所以返回true
console.log(res)

2.3.正则表达式exec()方法

        该方法可以理解为,用于检索字符串中与正则表达式匹配的部分,如果条件成立搜索到立即返回一个数组,否则null

例如:

//定义一个只能输入3小写字母的规则	
let reg=/[a-z]{3}/ 
//定义一个随机字符串
let str="abcd1234"
//由于字符串开头是符合规则,所以这里匹配成功
let res=reg.exec(str)
//打印一个数组,里面包含abc
console.log(res)

2.4.字符串search()方法

       用于搜寻下标,找不到返回-1

例如:

	//定义一个表达式规则
	let reg=new RegExp("2")
	//定义一个随机字符串
	let str="abcd1234efg"
	//搜寻表达式下标
	let res=str.search(reg)
	//2的下标是5,所以打印5
	console.log(res)

2.5.字符串match()方法

       该方法也是用于检索字符串中与正则表达式匹配的部分。

例如:

 //定义表达式规则
 let reg=new RegExp(/[a-z]/)
 //定义随机字符串
 let str="abcd1234efg"
 //通过表达式检索字符串
 let res=str.match(reg)
 //返回一个包含a的数组
 console.log(res)

可能有的小伙伴会问,你在前面也有一个exec()方法,也是用来检索字符和正则表达式匹配部分,但是他们还是有点区别的

1.exec 是正则表达式对象的方法,用于在字符串中查找匹配项。match 是字符串对象的方法,用于检索字符串中与正则表达式匹配的部分。

2.如果正则表达式具有全局标志(g),则 exec 方法始终从上次匹配的位置开始查找下一个匹配项。每次调用 exec 都会返回下一个匹配项的信息,直到找不到匹配项为止。

例如:

    //定义一个3个数字的规则
	let reg = /\d{3}/g;
	//定义一个随机字符串
	let str="123循环234551aaa爱你23567"
	//定义临时存储数组
	let match;
	//循环检索
	while ((match = reg.exec(str))!==null) {
	  console.log("匹配的值:"+match[0], "索引:"+reg.lastIndex);
	  /*
	  匹配的值:123 索引:3
	  匹配的值:234 索引:8
	  匹配的值:551 索引:11
	  匹配的值:235 索引:19
	  */
	}

       使用 exec() 方法可以进行多次匹配,而 match() 方法只能进行一次。但是match()一次可以把所有匹配的全部找出来。 

       总的来说,两者都可以用于查找字符串中的正则表达式匹配项,但它们的使用方式和返回值有所不同。exec 更加灵活,特别适用于需要多次查找匹配项的情况,而 match 则更适用于简单的匹配需求,返回所有匹配项的数组。

2.6.字符串replace()方法

      这个方法可以理解用于字符串中字符替换,取代

例如:

        //定义一个数字规则全文搜索
        let reg=/\d/g
		//定义一个随机字符串
		let str="111喜欢你23bcd"
		//把str字符串中,所有符合正则表达式的字符全部替换成a
		let res=str.replace(reg,"a") 
		//最终变成aaa喜欢你aabcd
		console.log(res)

 2.7.贪婪模式

        贪婪模式就是,正常情况下,正则表达式采用贪婪模式,尽可能多的匹配。

非贪婪模式就尽可能少匹配

例如:

//1.正常模式下,贪婪模式

//定义一个全局2到4个字母的规则
var regex = /[a-z]{2,4}/g;
//随机字符串
var string = "aa bbb cccc IloveYou";
//打印['aa', 'bbb', 'cccc', 'love', 'ou']
console.log(string.match(regex) ); 


//2.不正常模式下,非贪婪模式

//定义一个全局2到4个字母的规则,?将变成非贪婪模式,即尽可能少地匹配字符
var regex = /[a-z]{2,4}?/g;
//随机字符串
var string = "aa bbb cccc IloveYou";
//打印['aa', 'bb', 'cc', 'cc', 'lo', 've', 'ou']
console.log(string.match(regex) ); 

3.常见的使用正则表达式案例

3.1.匹配电话号码

let reg=/1[3456789]\d{9}/

 3.2.匹配邮箱

let reg=/^[A-Za-z0-9_.-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}$/

3.3.登陆匹配用户名不能为中文

  注:中文字符的 Unicode 范围为 \u4E00\u9FA5,因此可以通过排除这个范围内的字符来实现限制

let reg=/^[^\u4e00-\u9fa5]*$/

 3.4.匹配Ip地址

let reg=/\d+\.\d+\.\d+\.\d+/

3.5.匹配URL

let reg=/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/

4.正则表达式字符意义

d    代表数字[0-9]
\D    代表非数字
\w    代表数字,字母,或者下划线 可以使用\w+来表示多个
\W    代表非数字,字母,或者下划线
^    以什么开头,比如^[35]以数字3或者5开头,
$    以什么结束,比如[a-zA-Z]$里面的其中一个字母结束
{n}    出现n次
{n,m}    出现n到m次
{n,}    至少出现n次
g    全局模式,匹配所有符合条件的结果。
.    匹配除换行符之外的任意字符。
i    不区分大小写。
?    表示出现零次或者1次(最多出现一次)
+    表示出现一次或多次(最少出现一次)
*    出现0次或多次(任意次数)
\b    表示单词边界。它匹配一个单词的开始或结束位置,即单词与非单词字符之间的位置。
\s    匹配任意空白字符

4.总结 

      正则表达式是 JavaScript 中强大的字符串处理工具,它能够帮助你实现各种复杂的字符串匹配和处理操作。学习和熟练使用正则表达式,将大大提高你对字符串的处理效率和灵活性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值