2020-09-09---正则表达式

52 篇文章 0 订阅

一、什么是正则表达式

匹配字符串的一组规则

二、如何声明正则表达式

1.字面量 /正则表达式/标志位

2.构造函数 new RegExp(‘正则表达式’,‘标志位’)

三、正则的方法

1.正则表达式.test(字符串)

判断字符串中是否包含了正则表达式,如果有,返回true,如果没有,返回false

2.正则表达式.exec(字符串)

字符串处理正则的方法

1.字符串.match(正则表达式):返回数组
2.字符串.search(正则表达式):查询正则匹配的字符串在父串中第一次出现的下标位置,没有匹配,返回-1;
3.字符串.replace() : 替换

exec 与match的区别

//无g无组的情况:都匹配第一个,结束
//只要能匹配到一次,就返回匹配到的内容
var str = 'how do you do';
var re = /do/;
console.log(re.exec(str));  //['do']
console.log(str.match(re));   //['do']

//有g无组的情况:match将匹配所有的字符
//exec只要能匹配到一次,就返回匹配到的字符
//match会返回所有的匹配到的,匹配到几次就有几个数组元素
var str = 'how do you do';
var re = '/do/g'
console.log(re.exec(str));  //['do']
console.log(str.match(re));  //['do','do]

//无g有组的情况:都返回数组,第一个元素是整个正则匹配的内容(只返回第一次匹配到的),其它元素是由组匹配的内容
var str = 'abc 123,abc 123';
var re = /([a-z]+) (\d+)/;
console.log(re.exec(str));  //['abc 123','abc','123']
console.log(str.match(re));  //['abc 123','abc','123']

//有g有组的情况:exec不受g的影响。match将返回所有匹配的父级(整个正则匹配的内容)
var str = 'abc 123,abc 123';
var re = /[a-z]+ [0-9]+/g;
console.log(re.exec(str));  //['abc 123',[abc],[123]]
console.log(str.match(re));  //['abc 123','abc 123']

exec

  • 不受g的影响,如果没有组,则只获取第一次匹配的内容。如果有组,则获取一个父级,多个子级。

match

  1. 没g没组:只获取一个匹配的内容
  2. 有g没组:获取所有匹配的内容
  3. 没g有组:获取一个父级,多个子级
  4. 有g有组:获取多个父级

四、正则的元字符(三二二三三个一)

1.{} [] ()

(1){} :限制{}前面的一个或一组字符连续出现的次数
  1. {m} : 限制{}前面的一个或一组字符连续出现m次
  2. {m,} :限制{}前面的一个或一组字符连续出现m至无暇次
  3. {m,n} :限制{}前面的一个或一组字符连续出现m至n次
var o_txt = document.querySelector('inout');
//失焦事件 + 正则表达式 === 表单验证
o_txt.onblur = function(){
	//获取输入内容
	var str = this.value;
	//定义正则表达式
	var re = /^金{3}$/;
	//var re = /^金{3,}$/;
	if(re.test(str)){//判断str中是否有re
		close();
	}
}


(2)[]:表示范围
/^[abc]{3,}$/  :  字符串必须是至少3位的a-c中的字符
/^[a-z]$/i   等价于  /^[a-zA-Z]$/
[0-9]
[\u4e00-\u9fa5]  : 中文
(3)():表示组

2. * + ?

限制{}前面的一个或一组字符连续出现的次数
(1)* 限制{}前面的一个或一组字符连续出现 0至 无限次 等价于 {0,}
(2)+ 限制{}前面的一个或一组字符连续出现 1至 无限次 等价于{1,}
(3)?限制{}前面的一个或一组字符连续出现 0 至 1 次 等价于{0,1}

3.^ $

(1)^
1.放到正则表达式的开头,表示断头,限制字符串开头必须为什么
2.放到[]的前面,表示取反
(2)$ 表示断尾,限制字符串必须以什么结尾

4. . | \

(1). : 模糊匹配任意一个字符
(2)| :或者
(3)\ : 转义符

\d : 表示数字 [0-9]
\D : 表示非数字 [^0-9]
\w : 表示数字、字母、下划线 [a-zA-Z0-9_]
\W : 非(字母、数字、下划线)
\s :空白
\S :非空白
\b : 单词 边界
\B : 非边界

五、标志位

i : 表示布区分大小写

g:表示全局匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值