正则表达式是一个描述字符模式的对象。ECMAScript 的 RegExp 类表示正则表达式,而 String 和 RegExp 都定义了使用正则表达式进行强大的模式匹配和文本检索与替换的函数。
创建“正则表达式”
创建正则表达式提供了两种方法,一种是采用 new运算符,另一个是采用字面量方式(perl)。
两种创建方式
Js var box = new RegExp('box', 'ig');
var box = /box/ig;
第一个参数字符串; 第二个参数可选模式修饰符
模式修饰符的可选参数
i 忽略大小写
var box=new RegExp('box','i')
str.match(box)
g 全局匹配
var box=new RegExp('box','ig')
m 多行模式
var box=new RegExp('box',‘mg')
RegExp 对象的实例属性:
global Boolean 值 表示 g 是否已设置
ignoreCase Boolean 值 表示 i 是否已设置
multiline Boolean 值 表示 m 是否已设置
lastIndex 整数 表示下次匹配将从哪里字符位置开始(IE)
Source 正则表达式的源字符串形式
正则表达式的字符范围:
任意字符[abc]re —— are \bre \ cre
范围内字符 [0-9]——28 [a-z]——gf id[0-9]——id7
排除字符 a[^0-9]——abc \ a%h
组合字符 [0-9a-zA-Z]——98fRE
^ 行首匹配
$ 行尾匹配
| this|where|logo 匹配 this 或 where 或 logo 中任意一个
正则表达式的转义字符:
.任意字符
\d(数字) \w(数字、字符、下划线) \s(空格、TAB等空字符)
\D(非数字) \W(非数字、字符、下划线) \S(非空格、TAB等空字符)
\0 匹配 null 字符 \b 匹配空格字符
\f 匹配进纸字符 \n 匹配换行符
\r 匹配回车字符 \t 匹配制表符
正则表达式的量次:
{n,m} 至少N次,最多M次
{n,} 至少N次,最多不限
{n} 正好N次
* 任意次{0,}
? 零次或一次{0,1}
+ 一次或任意次{1,}
字符串与正则表达式的配合:
search 字符串搜索
因为 search 方法查找到即返回,也就是说无需 g 全局
match 获得匹配的项目
使用 match 方法获取获取匹配数组
replace 查找替换
使用 replace 替换匹配到的数据
正则表达式的校验:
test方法的使用
exec,test,match的区别
test 返回 Boolean,查找对应的字符串中是否存在模式
exec 查找并返回当前的匹配结果,并以数组的形式返回
exec方法的使用 :
当regExp没有全局标志时,其返回值为字符串数组:数组的第0号元素为刚匹配到的字符串,如果regExp有子表达式,则数组第1号元素为regExp的第一个子表达式,第2号元素为regExp的第二个字表达式...以此类推。
在设置g属性后,虽然匹配结果不受g的影响,返回结果仍然是一个数组(第一个值是第一个匹配到的字符串,以后的为分组匹配内容),但是会改变index和lastIndex等的值,将该对象的匹配的开始位置设置到紧接这匹配子串的字符位置,当第二次调用exec时,将从lastIndex所指示的字符位置开始检索。同样match方法在设置了g属性后,也会改变index和lastIndex的值,但是是一次性的。无法像exec那样能逐过程累积,因此无法累积获取下一次检索的位置。