JS正则表达式

[a-z]表示所有字母
\d表示所有数字
 [0-9]表示所有数字
正   则:str=abcssabc
表达式:regex=/[a-z]{3}\d{3}/                  表示: 3位字母,3位数字
                regex.test(str)
                regex.exec(str)

1、正则表达式: 

<script type="text/javascript">
			//正则书写方式
			// var reg = /abc/m;进行多行匹配
			var reg = /abc/;
			var str = "sssabc";
			//str.indexOf("abc")返回下标,找不到返回-1
			//str.includes("abc")返回布尔值
			//调用正则方法
			//找到了返回true,找不到返回false
			var flag = reg.test(str);
			console.log(flag);//===>true
			
			//.exec()返回匹配的第一个子串,找不到返回null
			var ch = reg.exec(str);
			console.log(ch);//===>abc
			
			//调用字符串方法
			//.match()返回匹配的第一个子串,找不到返回null
			var ch1 = str.match(reg);
			console.log(ch1);//===>abc
			
			//.search()返回匹配的第一个子串的开始下标,下标找不到返回-1
			//会把整个串看作1个
			var ch2 = str.search(reg);
			console.log(ch2);//===>3
		</script>

2、i g m修饰符

<script type="text/javascript">
			// var reg = new RegExp(/abc/,i)
			// var reg = /abc/ig;	// i大小写不敏感
			// var str = "aBcsssabc";
			// console.log(reg.exec(str));//===>aBc
			
			var reg2 = /abc/g;	// 进行全局匹配
			var str2 = "abcsssabc";
			console.log(reg2.lastIndex);//游标 ===>0
			console.log(reg2.exec(str2));//['abc', index: 0, input: 'abcsssabc', groups: undefined]
			console.log(reg2.exec(str2));//['abc', index: 6, input: 'abcsssabc', groups: undefined]
			// //全局匹配,返回所有符合条件的子串
			// console.log(str2.match(reg2));//===> ['abc', 'abc']
			
			//以abc开头
			// var reg3 = /^abc/mg;	// 进行全局匹配
			// var str3 = "abc\nabc";//\n换行
			// console.log(str3.match(reg3));//===> ['abc', 'abc']
			
			// var reg3 = /abc/g;	// 进行全局匹配
			// var str3 = "abc\nabc";//\n换行
			// console.log(str3.match(reg3));//===> ['abc', 'abc']
			
		</script>

3、方括号

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			//每个中括号代表一位
			var reg = /[1ac]/g;
			var str ="ss1dadcpr"
			console.log(str.match(reg));//['1', 'a', 'c']
			
			//返回1ac之外的字符
			var reg2 = /[^1ac]/g;
			var str2 ="ss1.,dadcpr"
			console.log(str2.match(reg2));//['s', 's', '.', ',', 'd', 'd', 'p', 'r']
			
			//返回数字
			var reg3 = /[0-9]/g;
			var str3 ="a1dg2"
			console.log(str3.match(reg3));//['1', '2']
			
			//返回数字和字母组合两位(数字在前)
			var reg4 = /[0-9][a-z]/g;
			var str4 ="a1dg2"
			console.log(str4.match(reg4));//['1d']
			
			//返回字母和数字组合两位(字母在前)
			var reg5 = /[a-z][0-9]/g;
			var str5 ="a1dg2"
			console.log(str5.match(reg5));//['a1', 'g2']
			
			//"|"或的用法
			var reg6 = /blue|red/g;
			var str6 ="bluered"
			console.log(str6.match(reg6));//['blue', 'red']
			
			//返回ab+数字,或者cd+数字
			var reg7 = /(ab|cd)[0-6]/g;
			var str7 ="ab8cd3"
			console.log(str7.match(reg7));//['cd3']
			
			//返回ab,或者cd+数字
			var reg7 = /ab|cd[0-6]/g;
			var str7 ="ab8cd3"
			console.log(str7.match(reg7));//['ab', 'cd3']
		</script>
	</body>
</html>

4、元字符

<script type="text/javascript">
			// .:除了换行和换行符
			// \w:[0-9A-z_]
			// \W:查找非单词字符[^0-9A-z_]
			// \d:查找0-9[0-9]
			// \D:查找非0-9[^0-9]
			
			var reg = /[0-9A-z_]/g;
			var str = "_123";
			console.log(str.match(reg));//['_', '1', '2', '3']
			
			var reg1 = /\w/g;
			var str1 = "_123";
			console.log(str1.match(reg1));//['_', '1', '2', '3']
			
			var reg2 = /\d/g;//0-9
			var str2 = "_q12";
			console.log(str2.match(reg2));//['1', '2']
			
			var reg2 = /\d\d/g;//0-90-9
			var str2 = "_q12";
			console.log(str2.match(reg2));//['12']
		</script>

5、量词、贪婪匹配

<script type="text/javascript">
			//量词
			//n+匹配1到多位
			var reg1 = /\d+/g;
			var str1 = "_q12";
			console.log(str1.match(reg1));//["12"]
			
			//n*匹配0到多位
			var reg1 = /bo*/g;//o至少要匹配到一位
			var str1 = "b123";
			console.log(str1.match(reg1));//['b']
			
			//n?匹配0或1个
			var reg2 = /bo?/g;
			var str2 = "boooo123";
			console.log(str2.match(reg2));//['bo']
			
			//贪婪匹配(按最多的匹配)
			//n{x}匹配x个
			//n{x,}匹配>x个
			//n{x,y}匹配x-y个
			var reg3 = /bo{4}/g;//{4}代表4个o
			var str3 = "boooo123";
			console.log(str3.match(reg3));//['boooo']
			
			var reg4 = /bo{2,}/g;
			var str4 = "boooo123";
			console.log(str4.match(reg4));//['boooo']
			
			var reg5 = /bo{1,3}/g;
			var str5 = "boooo123";
			console.log(str5.match(reg5));//['booo']
			
			//4个数字,4个字母组合
			var reg6 = /\d{4}[A-z]{4}/;
			var str6 = "123785boooo";
			console.log(str6.match(reg6));//3785booo
			console.log(reg6.test(str6));//true
			
			//必须是4个数字开头,4个字母结尾的组合
			var reg6 = /\d{4}[A-z]{4}$/;
			var str6 = "123785boooo";
			console.log(str6.match(reg6));//null
			console.log(reg6.test(str6));//false
			
			//以abc开头,以abc结尾
			var reg7 = /^abc[\W\w]*abc$/
			var str7 = "abc1235abc"
			console.log(str7.match(reg7));//'abc1235abc'
		</script>

6、非贪婪匹配

<script type="text/javascript">
			//非贪婪匹配(按最少的匹配)
			var reg = /\w{1,3}?/g;
			var str = "123sgfd";
			console.log(str.match(reg));//['1', '2', '3', 's', 'g', 'f', 'd']
			
			var reg1 = /\w{2,3}?/g;
			var str1 = "123sgfd";
			console.log(str1.match(reg1));//['12', '3s', 'gf']
			
			//匹配紧接着s的数字
			var reg2 = /\d(?=s)/g;
			var str2 = "1s2s";
			console.log(str2.match(reg2));//['1', '2']
			
			//正向预查(正向断言):匹配不紧接着s的数字
			var reg3 = /\d(?!s)/g;
			var str3 = "51s2s8987y3";
			console.log(str3.match(reg3));//['5', '8', '9', '8', '7', '3']
		
			//反向预查(反向断言):匹配不紧接着s的数字(2位)
			var reg4 = /\d{2}(?!s)/g;
			var str4 = "51s2s8987y3";
			console.log(str4.match(reg4));//['89', '87']
		</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值