正则和字符串之间的关系梳理

正则一直让人又爱又恨,因为使用正则能够快速方便的解决一些原本很复杂的问题。而正则用的最多也就是字符串的处理。他俩关系还真是有点暧昧复杂,让人傻傻有点搞不清楚,有必要进行梳理一番。

 

正则常用的方法有:

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);

 

相关文章

kindeditor4.x代码高亮功能默认使用的是prettify插件,prett...
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代...
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小