Python学习 Day29 正则表达式(一)

正则表达式(一)

(一)正则的基本使用方法

正则表达式是用于匹配字符串的一种模式、方法
正则表达式:regular expression,简称RegExp
正则表达式定义最常用的方法是字面量,写法//【定界符】
正则表达式在JS当中属于引用类型数据

	console.log(/abc/);
	console.log(typeof /你好/);
	//正则表达式最常用书写方式
	var reg = /\d+/g;
	console.log(reg);

在这里插入图片描述


(二)字符串方法结合正则

字符串方法作用
split根据匹配字符串切割父串
match使用正则表达式与字符串相比较,返回一个包含匹配结果的数组
search使用正则表达式或指定字符串进行搜索,返回第一个出现的匹配项的下角标
replace使用正则表达式和字符串比较,然后用新的子串来替换被匹配的字符串

(1)split方法结合正则

split方法:主要的作用是通过某一个匹配字符切割字符串,并返回一个数组

var str = '我要去 上海 北京 广州 深圳';
	var arr = str.split(' ');
	console.log(arr);

split方法结合正则

//字符串的split方法结合正则一切使用
	var str = '我很喜欢中国 上海    北京     深圳        杭州';
	/*
	 在正则表达式中:/s代表一个空格  
	 +号:在正则当中代表量词,含义是连续出现次数大于等于1
	 */
	var arr = str.split(/\s+/);//空格连续出现的次数≥1
	console.log(arr);

//用字符a切割字符串

	//用字符a切割字符串
	var str = 'bbaadfaaadffaddfaeraafgaaaaeeee';
	var arr = str.split(/a+/);
	console.log(arr);

在这里插入图片描述


(2)match方法结合正则

match方法:获取到第一个符合条件的字符,并返回一个数组

var str = '我喜欢听张杰的歌曲,因为张杰的歌很好听';
	var arr = str.match('张杰');
	console.log(arr);

match方法结合正则

//match结合正则一起使用
	var str = '我喜欢听张杰的歌曲,因为张杰的歌很好听';
	//在正则当中g【global】,主要的作用是将全部符合条件的字符匹配出来
	//修饰符:只能放在右侧边界符的右侧
	var arr = str.match(/张杰/g);
	console.log(arr);

匹配字符b

	//匹配字符b
	var str = 'abbcccbbbbbbbbbbbbbbbbbbdddddddddd';
	var arr = str.match(/b+/g);//不加g则匹配第一个
	console.log(arr);

//匹配字符“oo oo”

	//匹配字符“oo  oo”
	var str = 'aaaa o  o bbb o    o aaa';
	var arr = str.match(/o\s+o/g);//不加g则匹配第一个
	console.log(arr);

在这里插入图片描述


(3)search方法结合正则

search方法:获取到第一个符合条件的字符的索引值

	var str = '水面清圆,一一风荷举';
	console.log(str.search('风荷'));

search方法结合正则一起使用,只返回【第一个】符合条件的字符的索引值

console.log(str.search(/风荷/g));

返回字符b的索引值

	//返回字符b的索引值
	var str = 'abbdfgbbbbbbbssssbbbbbberg';
	console.log(str.search(/b+/g));

在这里插入图片描述


(4)replace方法结合正则

replace方法:替换字符串中符合条件的【第一个】字符

	var str = '我喜欢听张杰的歌曲,因为张杰的歌很好听';
	var newstr = str.replace('歌曲','music');
	console.log(newstr);

replace方法结合正则

	//将“张杰”全部替换
	var str = '我喜欢听张杰的歌曲,因为张杰的歌很好听';
	var newstr = str.replace(/张杰/g,'邓紫棋');
	console.log(newstr);

在这里插入图片描述
将’www.hello.com’替换成’www.byebye.com’

	//将'www.hello.com'替换成'www.byebye.com'
	var str = 'my name is tom';
	var newStr = str.replace(/\s+/g,'');
	console.log(newStr);

过滤字符串中空格:‘aa b c d e f’------>‘aabcdef’

	//过滤字符串中空格:'aa b  c d e  f'------>'aabcdef'
	var str = 'aa b  c d e  f';
	var newStr = str.replace(/\s+/g,'');
	console.log(newStr);

在这里插入图片描述


(三)正则表达式方法

(1)exec方法

exec:正则表达式方法,作用是在目标字符串中执行【一次】正则匹配操作

	//在'aaaabccccbacabc'中查找'abc'字符串
	var str = 'aaaabccccbacabc';
	//声明一个变量存储正则表达式
	var reg = /abc/;
	console.log(reg.exec(str));//只获得一次目标字符

在’ooooo 0 0 oooooooooooooo’字符串中匹配’o 0 0 o’

	//在'ooooo 0 0 oooooooooooooo'字符串中匹配'o 0 0 o'
	var str = 'ooooo 0 0 oooooooooooooo';
	var reg = /o\s+0\s+0\s+o/;
	console.log(reg.exec(str));

在这里插入图片描述


(2)test方法

test:正则表达式方法,作用是检测正则表达式中数据,是否在目标字符串中出现,结果为布尔值

	var str = '我喜欢听歌              张杰的歌';
	var reg = /\s+/;
	console.log(reg.test(str));//true

判断’abbbbbcsdabccccaabbccdd’字符串中是否包含’abc’字符串

	//判断'abbbbbcsdabccccaabbccdd'字符串中是否包含'abc'字符串
	var str = 'abbbbbcsdabccccaabbccdd';
	var reg = /abc+/;
	console.log(reg.test(str));//true

在这里插入图片描述


(四)正则表达式字符集

(1)简单类

简单类:就是任意多个字符进行集合书写,匹配某【一个】符合条件的字符 比如:[abc]

	var str = '我喜欢abc,同时也喜欢bbc';
	var arr =str.match(/[ab]bc/g);//[ab]代表匹配a或b
	console.log(arr);
	
	//简单类练习
	var str = '我喜欢张杰的歌曲,也喜欢张宇的歌曲';
	var arr = str.match(/[杰宇]/g);
	console.log(arr);

(2)范围类

范围类:有时匹配的东西很多,而且类型又相同,输入麻烦时,在中间加横线 比如:[0-9][A-Z][a-z]

	var str = '12306网站购票,110报警';
	var arr = str.match(/[0-9]+/g);//加号一定出现在匹配数据的后面
	console.log(arr);

(3)组合类

  • 组合类:允许用中括号匹配不同类型的单个字符,或者是一类及多类,或者一些单一的符号 比如[0-9a-z]
  • 就是将对多个范围类放在一起进行匹配
	var str = '水234面清ghj圆,一a12一风荷举'
	var arr = str.match(/[a-z0-9]+/g);
	console.log(arr);

在这里插入图片描述


(五)正则表达式修饰符

修饰符作用
g(global)修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)
i(ignore)修饰符用于执行对大小写不敏感的匹配
  • 修饰符务必出现在第二个边界符的右边
  • 在正则表达式中修饰符可以同时书写多个
	//g修饰符:全局匹配
	var url = 'http://www.baidu.com';
	var arr = url.match(/[a-z]+/g);
	console.log(arr);
	
	//i修饰符:忽略英文大小写
	var url = 'HTTP//www.Sina.Com';
	var arr = url.match(/[a-z]+/gi);
	console.log(arr);

在这里插入图片描述


(六)正则表达式边界符

正则表达式中一共有以下两个边界符:

边界符作用
^开头边界符表示字符串必须以^后面的内容作为开头,出现在第一个定界符前面
$结尾边界符表示$前面匹配的结果必须位于字符串最后,出现在第二个定界符后面
  • 在正则表达式中边界符不是必须的
  • 边界符可以两个同时出现
	//^开头边界符
	var str = 'abc水面清圆,一一风荷举';
	console.log(/^abc/.test(str));//true
	
	//$字符串是以$前面的内容作为结尾
	var str = '野渡无人舟自横123';
	console.log(/123$/.test(str));//true
	
	//两个边界符同时出现
	var str = 'hello';
	console.log(/^hello$/.test(str));//true

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值