JS-正则表达式

本文详细介绍了JavaScript中的正则表达式概念及其应用方法,包括基本语法、常见方法如split、match、search、replace和exec等,同时还讲解了字符集、修饰符、边界符、预定义类以及量词等内容。

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

JS-正则表达式

定义

<script type="text/javascript">
	//正则表达式【RegExp】:正则表达式是一种匹配字符串的模式、规则
	//正则表达式书写的时候是由//,这两个/经常称之为定界符
	//正则表达式在JS中属于引用数据类型
	console.log(/abc/);
	console.log(typeof /hello/);//object
	//正则表达式常用书写方式
	var reg = /\d+/g;
	console.log(reg);
</script>

字符串方法split结合正则

<script type="text/javascript">
	//split:字符串方法,主要的作用是可以通过某一个匹配字符进行切割字符串,返回一个数组
	var str = "我很喜欢 中国 上海 北京 天津";
	var arr = str.split(" ");
	console.log(arr);//["我很喜欢", "中国", "上海", "北京", "天津"]
</script>
<script type="text/javascript">
	//字符串的split方式结合正则
	var str = "我很喜欢 中国  上海      北京         天津";
	var arr = str.split(/\s+/);
	console.log(arr);//["我很喜欢", "中国", "上海", "北京", "天津"]
	//在正则表达式中
	//\s代表的是一个空格
	//+在正则中代表的是量词,含义是连续出现的次数大于等于1
</script>
<script type="text/javascript">
	//用字符a切割字符串
	var str = "babaabbdbaaasbdbaabbasbaaaadaw";
	var arr = str.split(/a+/);
	console.log(arr);//["b", "b", "bbdb", "sbdb", "bb", "sb", "d", "w"]
</script>

字符串match结合正则

<script type="text/javascript">
	//match:可以获取第一个符合条件的字符,并返回一个数组
	var str = "我很喜欢张杰的歌曲,因为张杰的歌曲很好听";
	var arr = str.match("张杰");
	console.log(arr);//只能匹配到第一个张杰
</script>
<script type="text/javascript">
	//match结合正则表达式一起用
	var str = "我很喜欢张杰的歌曲,因为张杰的歌曲很好听";
	var arr = str.match(/张杰/g);
	console.log(arr);//["张杰", "张杰"]
	//在正则中,g【global:全局,全部】:可以将全部符合条件的字符匹配出来
	//修饰符:只能放在右侧边界符的后面
</script>
<script type="text/javascript">
	var str = "abbcccbbbbbbdddbbbbeeebbbbbfff";
	var arr = str.match(/b+/g);
	console.log(arr);//["bb", "bbbbbb", "bbbb", "bbbbb"]
</script>
<script type="text/javascript">
	var str = "aaaa o  o bbb o      o  aaa";
	var arr = str.match(/o\s+o/g);
	console.log(arr);//["o  o", "o      o"]
</script>

字符串search结合正则

<script type="text/javascript">
	//search:可以获取第一个符合条件的字符的索引值
	var str = "今天的北京是真的热啊";
	console.log(str.search("北京"));//3
	//正则表达式可以结合search使用
	console.log(str.search(/北京/));//3
</script>
<script type="text/javascript">
	var str = "abbcddebbeeemmdmdmdm";
	console.log(str.search(/b+/));//1
</script>

字符串replace结合正则

<script type="text/javascript">
	//replace:可以进行某一个字符串中符合条件的字符进行替换
	var str = "我喜欢汪峰,因为汪峰的歌曲很好听";
	var str1 = str.replace("歌曲","music");
	console.log(str1);
</script>
<script type="text/javascript">
	var str = "我喜欢汪峰,因为汪峰的歌曲很好听";
	var str1 = str.replace(/汪峰/g,"张杰");
	console.log(str1);
</script>
<script type="text/javascript">
	//过滤空格
	var str = "my na    me is tom";
	var str1 = str.replace(/\s+/g,"");
	console.log(str1);
</script>

正则表达式的方法exec

<script type="text/javascript">
	//exec:属于正则表达式的方法
	//作用:可以在目标字符串中进行一次匹配,只有一次,返回一个数组
	var str = "aaaabccccbacbabc";
	var reg = /abc/;
	var arr = reg.exec(str);
	console.log(arr);
</script>
<script type="text/javascript">
	var str = "ooo 0  0 oooooo";
	var reg = /o\s+0\s+0\s+o/;
	console.log(reg.exec(str));//["o 0  0 o", index: 2, input: "ooo 0  0 oooooo", groups: undefined]
</script>

正则表达式的方法test

<script type="text/javascript">
	//test:属于正则表达式的方法,可以检测正则表达式中的数据,是否在目标字符串中出现
	//如果出现,返回true,否则返回false
	var str = "我很喜欢中国    空气  ";
	var reg = /\s+/;
	console.log(reg.test(str));//true
</script>
<script type="text/javascript">
	var str = "今天是个好日子";
	var reg = /好/;
	console.log(reg.test(str));//true
</script>

正则表达式字符集

<script type="text/javascript">
	//简单类:就是把多个字符聚集在一起进行匹配,只能匹配某一个符合条件的字符
	var str = "我喜欢abc,但是我也喜欢bbc";
	var arr = str.match(/[ab]bc/g);
	console.log(arr);//["abc", "bbc"]
	
	var str = "我喜欢张杰的歌曲,也喜欢张宇的歌曲";
	var arr = str.match(/张[杰宇]/g);
	console.log(arr);
</script>
<script type="text/javascript">
	//范围类:匹配的东西太多,类型相同,全部输入太麻烦,我们可以在中间加个横线
	//[0-9][A-Z][a-z]
	var str = "我喜欢12306网站,也喜欢187";
	var arr = str.match(/[0-9]+/g);
	console.log(arr);//["12306", "187"]
</script>
<script type="text/javascript">
	//组合类:将多个范围类放在一起进行匹配
	var str = "在A13单位有一个帅哥,在b29单位有一个美女";
	var arr = str.match(/[A-Za-z0-9]+/g);//[]里面的顺序无所谓
	console.log(arr);//["A13", "b29"]
</script>

正则表达式修饰符

<script type="text/javascript">
	//修饰符:修饰符务必出现在第二个定界符的右边 
	//g[global]:进行全局匹配,将全部符合条件的数据匹配出来
	var url = "http://www.baidu.com";
	var reg = /[a-z]+/g;
	console.log(url.match(reg));//["http", "www", "baidu", "com"]
	//i[ignore]:忽略英文大小写
	//在正则表达式中,修饰符可以同时有多个
	var url = "hTTp://wWw.SiNa.Com";
	var arr = url.match(/[a-z]+/ig);
	console.log(arr);//["hTTp", "wWw", "SiNa", "Com"]
</script>

正则表达式边界符

<script type="text/javascript">
	//正则表达式中边界符
	//^:字符串是以^后面的内容作为开头的
	//^:一定是出现在第一个定界符的后面
	var str = "web是真的很简单学";
	console.log(/^web/.test(str));//true
	
	//$:字符串是以$前面的内容作为结尾
	//$:一定是出现在第二个定界符的前面
	var str = "我非常喜欢jsx";
	console.log(/jsx$/.test(str));//true
	
	//在正则表达式中,边界符不一定非要写。边界符可以两个同时出现
	
	var str = "hello";
	console.log(/^hello$/.test(str));//true
</script>

正则表达式预定义类

<script type="text/javascript">
	//预定义类:这个术语,这些特定符号只能在正则表达式中使用
	//\d:[0-9]之间的任意一个数字
	var str = "买了一个mate30,花了5000";
	console.log(str.replace(/[0-9]+/g,"*"));//买了一个mate*,花了*
	console.log(str.replace(/\d+/g,"*"));//买了一个mate*,花了*
	
	//\D:非[0-9]之间的一个字符
	var str = "今天36度?";
	console.log(str.replace(/\D+/g,"×"));//×36×
	
	//\s:一个空格字符
	var str = "admin  p w d ";
	console.log(str.replace(/\s+/g,""));//adminpwd
	
	//\S:一个非空格的字符
	var str = "我知道  你不  知道";
	console.log(str.replace(/\S+/g,"o"));//o  o  o
	
	//\w:任意字母、数字、下划线
	var str = "JavaScript当中有一个函数库underscore,利用下划线_";
	console.log(str.match(/\w+/g));//["JavaScript", "underscore", "_"]
	
	//\W:非数字,字母,下划线的字符
	console.log(str.replace(/\W+/g,"×"));//JavaScript×underscore×_
</script>

正则表达式量词

<script type="text/javascript">
	//量词:如果需要将正则的某个符号连续匹配多次,可以使用量词对符号进行修饰
	
	//{n}:硬性量词,n代表匹配的数据连续出现n次
	var str = "我考了176分,高了及格线76分";
	var arr = str.match(/\d+/g);//["176", "76"]
	var arr = str.match(/\d{3}/g);//["176"]
	console.log(arr);
	
	//{n,m}:软性量词,匹配的数据出现的次数至少n次,最多m次
	var str = "我知道JavaScript很厉害,因为HTML与CSS完美结合";
	console.log(str.replace(/\w{4,20}/g,"@"));//我知道@很厉害,因为@与CSS完美结合
	
	//{n,}:软性量词,匹配的数据至少出现n次
	var str = "我买车花了300元,借用他人50000元";
	console.log(str.match(/\d{1,}/g));//["300", "50000"]
	
	//?:软性量词,匹配的数据连续出现0次或一次
	var str = "我喜欢雨神";
	console.log(/雨?/.test(str));//true
	
	//*:软性量词,匹配的数据连续出现任意次
	console.log(/张*/.test(str));//true
	
	//+:软性量词,匹配的数据连续出现至少一次
</script>

正则表达式分组

<script type="text/javascript">
	//分组:在正则表达式中,利用()括起来的内容当成一个整体进行操作
	var str = "byebye";
	console.log(/(bye){2}/.test(str));//true
	
	//[\u4e00-\u9fa5]:匹配一个汉字
	var str = "我每天都刷2次牙洗3次脸";
	console.log(str.replace(/([\u4e00-\u9fa5]){1}/g,"k"));//kkkkk2kkk3kk
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值