正则表达式对象的方法
RegExg对象包含text()和exec()两个方法,其功能基本相似,用于测试字符串匹配。
reg.test(str) 用来验证字符串是否符合正则 符合返回true 否则返回false
var str = 'abc';//reg代表正则表达式在test前,而str是要处理的字符串在test之后,这个是重点。
var reg = /\w+/;
console.log(reg.test(str)); //true
reg.exec() 用来捕获符合规则的字符串
var str = 'abc123cba456aaa789';
var reg = /\d+/;
console.log(reg.exec(str))
// ["123", index: 3, input: "abc123cba456aaa789"];
console.log(reg.lastIndex)
// lastIndex : 0
reg.exec捕获的数组中
// [0:"123",index:3,input:"abc123cba456aaa789"]0:"123" 表示我们捕获到的字符串
index:3 表示捕获开始位置的索引input 表示原有的字符串
当我们用exec进行捕获时,如果正则没有加'g'标识符,则exec捕获的每次都是同一个,当正则中有'g'标识符时 捕获的结果就不一样了,我们还是来看刚刚的例子
var str = 'abc123cba456aaa789';
var reg = /\d+/g; //此时加了标识符g
console.log(reg.lastIndex)//lastIndex : 0
console.log(reg.exec(str))// ["123", index: 3, input: "abc123cba456aaa789"]console.log(reg.lastIndex)// lastIndex : 6
console.log(reg.exec(str))// ["456", index: 9, input: "abc123cba456aaa789"]console.log(reg.lastIndex)// lastIndex : 12
console.log(reg.exec(str))// ["789", index: 15, input: "abc123cba456aaa789"]console.log(reg.lastIndex)// lastIndex : 18
console.log(reg.exec(str))// nullconsole.log(reg.lastIndex)// lastIndex : 0
每次调用exec方法时,捕获到的字符串都不相同
lastIndex :这个属性记录的就是下一次捕获从哪个索引开始。
当未开始捕获时,这个值为0。
如果当前次捕获结果为null。那么lastIndex的值会被修改为0.下次从头开始捕获。
而且这个lastIndex属性还支持人为赋值。
exec的捕获还受分组()的影响
var str = '2017-01-05';
var reg = /-(\d+)/g
// ["-01", "01", index: 4, input: "2017-01-05"]"-01" : 正则捕获到的内容"01" : 捕获到的字符串中的小分组中的内容
重点:String对象的一些和正则表达式相关的方法如下://string中的关于正则相关的方法使用与正则表达式对象的直接方法有所不同,例:alert(str.match(pattern))其中pattern是正则表达式,str是字符串,与上刚好相反。
match():找到一个或多个正则表达式的匹配。
replace():替换与正则表达式匹配的子串。
search():检索与正则表达式匹配的值
split():把字符串分割为字符串数组。
测试正则表达式实例如下:
/*使用match方法获取匹配数组*/
var pattern =/gift/ig; //全局搜索
var str=’This is a Gift order ,That is a Gift order too!’;
alert(str.match(pattern));//匹配到两个Gift;
alert(str.match(pattern).length);//获取数组的长度
//结果是;Gift Gift
/*使用search来查找匹配数据*/19
var pattern =/gift/i;
var str=’This is a Gift order ,That is a Gift order too!’;
alert(str.search(pattern));//查找到返回位置,否则返回-1
//结果是:10
/*使用replace方法替换匹配到的数据*/
var pattern =/gift/ig; //全局搜索
var str=’This is a Gift order ,That is a Gift order too!’;
alert(str.replace(pattern,’simple’));//将Gift替换成了simple
//This is a simple order ,That is a simple order too!’
/*使用split方法拆分成字符串数组*/
var pattern =/ /ig;
var str=’This is a Gift order ,That is a Gift order too!’;
alert(str.split(pattern));//将空格拆开分成数组
//This ,is, a ,Gift, order, ,That, is, a ,Gift, order ,too!