第六天正则

正则表达式

正则与字符串方法结合 split/match/search/replace 切割 / 匹配结果 /查找位置/替换过滤字符

正则表达式方法 exec/test 执行\判断

字符集 [0-9]

修饰符 全局or不敏感匹配//g(i)

边界符 ^ $ 开头/结尾

预定义类 \s\d\w 空格\数字\字符

量词 +/{n}

分组 /(整体)/

中文匹配 [\u4e00-\u9fa5]

正则表达式是用于匹配字符 串的一种模式、方法。

正则表达式:regular expression,简称RegExp。

正则表达式定义最常用的方法是字面量,写法//。

括号内字符不用加引号

  • 正则表达式书写是由//组成,这两个反斜杠称之为定界符
  • 正则属于引用数据类型
console.log(/abc/);

正则在控制台打印值时,正则红色,字符串黑色,数字蓝色。

1.1字符串方法结合正则

字符串方法:
# *split:根据匹配字符串切割父字符串
# match:使用正则表达式与字符串相比较,返回一个包含匹配结果的数组
# search:使用正则表达式或指定字符串进行搜索,返回第一个出现的匹配项的*下角标*
# replace:使用正则表达式和字符串比较,然后用新的子串来替换被匹配的子串
var str="我喜欢中国 上海  哈尔滨      北京"var arr=str.split(/\s+/);
#	\s(space)表示一个空格
#	+在正则当中表示的是量词,代表含义连续出现次数大于等于1

2.1字符串split

split:根据匹配字符串切割父字符串

转化为数组

eg: 根据空格切割字符串:'aa bbb    c dd eeeeee'
var arr = str.split(/\s+/);
练习:根据字母a切割字符串 ‘bbaacaaaadddaeeeeeaaf'
var arr = str.split(/a+/)

2.2字符串match

match:使用正则表达式与字符串相比较,返回一个包含匹配结果的数组

(/liu/g) g===>global 全局

eg:'abbcccbbbbbddbbbdabbb' 中查询重复 'b' 字符串。
var str = "abbcccbbbbbddbbbdabbb";
var arr = str.match(/b+/);

练习:'aaaa o  o bbb o   o  aaa'找寻所有‘o    o’字符串
var str2 = "aaaa o  o bbb o     o  aaa";
var arr2 = str2.match(/o\s+o/g); 

2.3字符串search

search:使用正则表达式或指定字符串进行搜索,返回第一个出现的匹配项的下角标

eg:在‘abcdefg’中寻找‘cd’位置
var str = "abcdefg";
console.log(str.search(/cd/));

练习:在字符串'aaaa o  o bbb aaa'中寻找重复的a的位置。
var str = "aaaa o  o bbb aaa";
console.log(str.search(/a+/g));

2.4字符串replace

replace:使用正则表达式和字符串比较,然后用新的子串来替换被匹配的子串

不用正则只能匹配第一个

eg:将'www.hello.com'替换成'www.byebye.com'
var str = "www.hello.com";
var str2 = str.replace(/hello/,"byebye");

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

正则表达式方法

3.1正则方法exec

exec:在目标字符串中执行一次正则匹配操作

# 格式:	  reg=/0/;//定义正则格式
			console.log(reg.exec(字符串))//规则.exec(数据)
eg:在'aaaabccccbacabc'中查找'abc'字符串
var reg = /abc/;
console.log(reg.exec("aaaabccccbacabc"));

练习:在'ooooo  0 0  ooooooooooo'字符串中匹配["o  0 0  o"]
var reg1 = /o\s+0\s+0\s+o/;
console.log(reg1.exec("ooooo  0 0  ooooooooooo"));

3.2正则方法test

test:测试当前正则是否能匹配目标字符串

会返回布尔值。

eg:判断'aaddccddabcddeeddfff'是否包含'abc'字符串
var reg = /abc/;
console.log(reg.test("aaddccddabcddeeddfff"));

练习:检测'a  bc''abc'是否包含空格。

4.1字符集 (正则匹配范围集)

//	简单类:就是任意多个字符进行集合书写,多个字符连续书写。
//	只能匹配某一个符合条件的字符
比如:[abc]
//	范围类:有时匹配的东西过多,而且类型又相同,全部输入太麻烦,我们可以在中间加了个横线。
比如:[0-9]  [A-Z]  [a-z]
//	组合类:允许用中括号匹配不同类型的单个字符,或者是一类及多类,或者一些单一的符号。
	多个范围中间没有连接号
比如:[0-9a-z]

简单类

var str ="我喜欢abc,但是我也喜欢bbc"
var arr =str.match(/[ab]bc/g);//就能查找两个字符

4.2修饰符

//	g 修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
//	i 修饰符用于执行对大小写不敏感的匹配。

4.3边界符

//	^	开头	表示字符串必须以^后面的内容作为开头。

//	$           结尾       表示$前面匹配的结果必须位于字符串最后

^查开头

//	正则表达式中:边界表达式一共两者
//	^:代表的是字符串是以^后面内容为开头的
  var str="web是最好的语言";
  console.log(/^web/,test(str));
  检测是否web开头

$查结尾

//	$:代表的是字符串是以$前面内容结尾
	var str="我非常喜欢react框架中jsx"
    console.log(/jsx$/.test(str));
  • ^一定出现第一个定界符的后面
  • $一定出现第二个定界符的前面
  • 边界符可以两个同时出现

5.1预定义类

	 d 数字 digit	
//	\d	[0-9]	 \d可以匹配一个任意的数字字符	
//	\D	[^0-9]       \D 匹配任意一个不是数字的字符
	 s 空格 space	
//	\s            可以匹配任意的空白。
//	\S          可以匹配任意的不是空白的字符。
	 w 单词 word	
//	\w         可以匹配任意的字母、数字或下划线。
//	\W      可以匹配任意的字母、数字、下划线以外的内容。
  • 预定义类:这个术语、及特定符号只能在正则表达式中使用

  • \d 代表的是[0-9]之间的任意一个一位数字

var str ="我今天买一个华为P30.花了我5888元";
替换其中的数字
1.字符集 console.log(str.replace(/[0-9]+/g,'*')); 
2.预定义类	console.log(str.replace(/\d+/g,'*'));

5.2量词

如果需要将正则的某个符号连续匹配多次,可以使用量词对符号进行修饰。量词的写法:{},内部书写对
应的数字,表示量词是多少。

//	{n}		硬性量词		对应零次或者n次
//	{n,m}   软性量词	    至少出现n次但不超过m次(中间不能有空格)
//	{n,}	软性量词		至少出现n次
//	?		软性量词		出现零次或一次
//	*		软性量词		出现零次或多次(任意次)
//	+		软性量词		出现一次或多次(至少一次)

so: +想当于(1,)

var str="我今年高考,考了688分距离清华大学还差10分",1324;
var	arr=str.match(/\d+/g);  	 688 10 1234
var	arr=str.match(/\d{3}/g);	 688 123

6、分组

正则中使用()表示分组,内部的内容会作为一个整体进行操作。
后期如果小括号后面有量词,表示小括号内部整体重复匹配多少次。
/(byebye){2}/.test(“byebye”)     true

分组:在正则表达式中,利用小括号括起来的内容当中当作一个整体进行。

var str="byebye";
console.log(/(bye){2}/.test(str));

7、中文匹配

固定字符集写法:[\u4e00-\u9fa5]

可以匹配一个任意的中文汉字。

var str="老师1每天都在2摸鱼3";
console.log(str.replace(/[\u4e00-\u9fa5]+/g,"k"));
//	此时连续出现的汉字的换成了k
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值