正则一直让人又爱又恨,因为使用正则能够快速方便的解决一些原本很复杂的问题。而正则用的最多也就是字符串的处理。他俩关系还真是有点暧昧复杂,让人傻傻有点搞不清楚,有必要进行梳理一番。
正则常用的方法有:
1、test:pattern.test(string); 返回true or false;
2、exec:pattern.test(string);返回一个匹配信息的数组,没有匹配项返回null。
PS:同一个字符串上多次调用始终返回第一个匹配信息。只有设置了(g)全局属性,才会返回下一个匹配项,直到字符串末尾。
var pattern=/<(\w+)(>)/g; var se=pattern.exec(str); var se1=pattern.exec(str); console.log(se)//[ "<tt>","tt" ,">"]数组第一项是匹配项,第二项代表第一个捕获项 console.log(se1)[ "<rr>","rr",">" ]数组第一项是匹配项,第二项代表第一个捕获项,第三项代表第二个捕获项
字符串中可以使用正则的方法:
1、match:只接受一个参数,与调用pattern.exec()本质上相同,返回同一个数组。
var str='<tt><rr><rr/><ll><lt></lt><ll/><dd></dd><rr/><tt><tt/><rr><rr/>'; var ss=str.match(/<\w+>/); [ "<tt>" ] var sss=str.match(/<\w+>/g); rr>","<ll>","<lt>","<dd>","<tt>","<rr>" ]
2、search:只接受一个参数,返回字符串中第一个匹配项的索引,没有找到返回-1
var sea=str.search(/<\w+>/); 0 var sea1=str.search(/<\w+\/>/);8
3、replace:
var text="cat bat ut dat"var re=text.replace("at","11");c11 bat ut dat var re1=text.replace(/at/g,1)">c11 b11 ut d11 var re2=text.replace(/(.a(t))/g,"$1$2") ;catt batt ut datt function replaceText(text){ return text.replace(/at/g,(match,pos,originalText){ console.log(match+" "+pos+" "+originalText);要输出三次 }) } replaceText(text); at 1 cat bat ut dat at 5 cat bat ut dat at 12 cat bat ut dat 最终结果是cundefined bundefined ut dundefined 因为函数没有返回值,所以是undefined
4、split:可以有第二个参数,表明返回的数组的长度
var result=text.split(/\s/);[ "cat","bat","ut","dat" ] var result1=text.split(/\s/,2);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。