刚开始接触正则,发现了一件有意思的事,我想要匹配正则,这下尴尬了- -,光知道正则表达式写法,并不知道正则如何才能获取匹配值。
慢慢摸索中。。。
找到答案!!!
正则匹配有两种方法:
一种是match方法: | 字符串.正则表达式 |,接收正则表达式匹配字符串
一种是exec方法,| 正则表达式.字符串 |,接收字符串匹配正则表达式
这两种方法都返回与之相匹配的值,而他们唯一的区别只是获取值的类型不相同
在W3C上给出这样一则提示(区别)
重要事项:如果在一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把 lastIndex 属性重置为 0。
提示:请注意,无论 rxp 是否是全局模式,exec() 都会把完整的细节添加到它返回的数组中。这就是 exec() 与 String.match() 的不同之处,后者在全局模式下返回的信息要少得多。因此我们可以这么说,在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。
进行测试:
var str = 'ai name sai';
var rxp = new RegExp('[^\x20]+', 'g');
使用match方法进行匹配。
str.match(rxp); // result: Array(3) [ "ai", "name", "sai" ]
使用exec方法进行匹配。
rxp.exec(str) ; // Array [ "ai" ]
rxp.exec(str) ; // Array [ "name" ]
rxp.exec(str) ; // Array [ "sai" ]
exec其他图自行脑补。
测试中可以得出结论:
1. match可以获取所有匹配的值,exec每次只获取第一个匹配的值
2. match获取的属性值较少,exec获取的属性值相对完整许多
完成 ^_^