RegExp——封装一条正则表达式,并提供正则表达式执行验证和查找的API
我们需要在何时去使用这个API呢?大致分为两个情况。1、使用正则表达式来验证字符串格式时。2、即查找关键词内容,又查找关键词位置。
首先需要创建RegExp,创建也分为两个情况。
1、直接量创建。var reg=/正则表达式/ig 何时使用:如果正则表达式是固定不变的,就使用直接量来创建。如果此时出现字符冲突则加入\(反斜杠) / ->\/
2、用new。var reg=new RegExp("正则表达式","ig") 何时使用:如果正则表达式需要动态生成时,就使用new来创建RegExp对象。如果此时出现字符冲突时 \->\\ \" \'
RegExp有两套API,分别为:
查找关键字 —— var arr=reg.exec(str) 即查内容又查关键字,在str中查找下一个满足reg要求的关键字。返回值有两个:arr[]和index。 arr[ 0:"完整关键词" ] index: 本次找到关键词的位置 reg.lastIndex即为下次开始查找的关键词的位置。exec会自动为下次查找位置重新赋值,不需要手动进行修改。如果没有找到关键字,就会返回NULL。不过需要注意的一点就是,先要判断是否为NULL,再使用。
exec做的哪三件事? 1、将本次查找的关键字,放入数组中第0个元素,将每个数组中的子内容放入后续元素。 2、修改数组中的index元素位置,记录本次查找关键词的位置。3、修改reg.lastIndex属性=index+关键词的长度
固定的套路:
var arr=null;
while((arr=reg.exec(str))!=null){
arr[0] //完整关键词
arr[n] //第n个分组的子内容
arr.index //本次找到关键词的位置
reg.lastIndex //下次开始查找的位置
}
验证 —— var bool=reg.test(str) 验证str是否符合reg的规则要求
问题:test默认,只要部分匹配reg要求就返回true
解决办法:只要验证,正则前面都加^,后面都加$,表示从头到尾匹配。(这是一个坑!)