目录
一、正则表达式
1、历史起源
1956年,美国新泽西、底特律的两位神经生理方面的科学家,通过数学符号的形式来描述神经系统网络模型。
肯.汤马森(UNIX之父)把正则引入到UNIX引入编辑器QED、ED、双管道命令grep
《精通正则表达式》的作者,把这种数学符号,编辑成书,并正式成为正则表达式。
2、什么是正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
模式:正则表达式
某种:模糊查询
select * from goods where title=’联想手机’; 精确查询
select * from goods where title like ‘%联想手机%’; 模糊查询
3、应用场景
1)信息隐藏 任*遥 135****999
2)信息过滤 *** 河蟹 政府 zf 上海 sh
3)信息采集 l356o998677
4)信息检索
…
4、快速入门
1)查找一个字符串中是否具有数字“8”
运行结果:true
2)查找一个字符串中是否具有数字
运行结果:true
3)查找一个字符串中是否具有非数字
运行结果:false
二、正则对象
1、创建正则对象
在Javascript中,如果要使用正则表达式,请先创建正则对象
1)隐式创建
基本语法:
var 变量=/正则表达式/匹配模式;
2)显示创建(直接实例化)
基本语法:
var 变量=new RegExp(“正则表达式”,”匹配模式”);
说明:两者创建方式上,功能是一致的,只有语法不同
实例代码:
由于显示创建我们通常需要进行转义,所以推荐大家使用第一种,隐式创建方式。
2、匹配模式
g:global全局匹配
i:ignore忽略大小写
m:多行匹配(了解)
3、正则对象从“哪”来
typeof
constructor
instanceof
示例代码:
说明:通过验证,可以发现,正则对象是RegExp类的实例,同时也是Object类的实例
四、正则表达式中的常用方法
1、6大常用方法
RegExp类(正则对象):
test():判断字符串是否含有指定模式的字符,bool:true、false
exec():返回字符串中是否含有指定模式的字符
String类(字符对象):
search():返回指定模式的字符在字符串出现的位置,默认从0开始
match():返回指定模式的字符串,返回数组类型
replace():通过指定模式字符进行字符串替换
split():通过指定模式字符实现对字符串的分割,返回数组类型
示例代码:
效果实现:
代码实现:
exec()方法实现
search()方法
match()方法
replace()方法
split()方法
五、正则表达式中常用概念
1、几个常用概念
1)子表达式
在正则表达式中,通过一对圆括号()括起来的内容,我们称之为子表达式。
2)捕获
子表达式在匹配内容后,系统会自动捕获这个过程,并将匹配到的结果放入系统的临时缓冲区中。
3)反向引用
在正则表达式中,可以通过 (n>=1&&n<=99的正整数)来引用临时缓冲中的内容
2、原理图:
3、子表达式应用
1)查找连续的四个数字,如:3569
答:dddd
2)查找连续的相同的四个数字,如:1111
答:(d)111
3)查找数字,如:1221,3443
答:(d)(d)21
4)查找字符,如:AABB,TTMM
答:(w)1(w)2
5)查找连续相同的四个数字或四个字符
答:(w)111
练习:
var str = ‘asdfasjk<h1>hello<h1>lkjlasdfasdfwerwerwiu<div>javascript</div>uiasdafsdfsadf’;
通过正则表达式匹配字符串中的html代码
示例代码:
运行结果:
六、子表达式与exec方法
例1:exec方式检索所有指定模式字符串
例2:exec方法与子表达结合应用
运行结果:
第一次运行结果:123,1,23
第二次运行结果:345,3,45
第三次运行结果:456,4,56
第四次运行结果:678,6,78
观察以上程序运行结果可知,exec方法与子表达式返回结果会变为数组且
row[0]的值为最终的匹配结果
row[1]保存是第一个子表达式所匹配内容
row[2]保存是第二个子表达式所匹配内容
…
row[n]保存是第n个子表达式所匹配内容