js正则表达式(2)

找到以某个字符串开头的字符串

var myReg=/^(abc)/gim;

如果不加m,那么只找一行,而加了m可以找到每行中以该字符串开头的匹配文本。

如:

abcsfsdfasd7890hklfahskfkaluiop7890-7890782ksdlafkasdnfklsdnf;lsabc

sdfasd
f
asd
f
asd
abcadaabcadfads

不加m只能找到一次,加了能找到两次。

String与正则表达式相关的方法

(1)test()方法

若找到则返回true,否则返回false。

测试如下:

function test1(){
        var con=content.innerText;
        window.alert(con);
        var reg=/abc/gi;
        if(reg.test(con)){
            window.alert("有abc");
        }else{
            window.alert("没有abc");
        }
    }

用法是

reg.test(con)

而不是

con.test(reg);

支持正则表达式的String对象的方法。

search()方法

返回第一个匹配到的文本的起始位置。

var str="visit W3School!";
window.alert(str.search(/W3School/));

 输出:6.

(2)match()

它使用正则表达式模式对字符串执行搜索,并返回一个包含搜索结果的数组。

function test2(){
        var con=content.innerText;
        var myreg=/abc/gi;
        res=con.match(myreg);
        for(var i=0;i<res.length;i++){
            window.alert(i+" "+res[0]);
        }
    }

(3)replace()

function test3(){
        var con=content.innerText;
        var myReg=/(\d){4}/gi;
        //把四个数,换成 
        var newCon=con.replace(myReg,"这里原来是四个数");
        content.innerText=newCon;
    }

函数的返回值是替换后的新字符串。

(4)split(regExp)

该方法可以把字符串按照正则表达式来分割。

RegExp对象的属性

1.  index 是当前表达式首次匹配内容的开始位置,从0开始计数。其初始值为-1,每次成功匹配时,index属性都会随之改变。

2.  lastindex  是当前表达式模式首次匹配内容中最后一个字符的下一个位置,从0开始计数。

index是静态属性,直接用类名调用。

3.input  返回当前所作用的字符串

4.leftContext  是当前表达式模式最后一个匹配字符左边的所有内容。

5.rightContext  是当前表达式模式最后一个匹配字符串右边的所有内容。

function test4(){
        var con=content.innerText;
        var myReg=/(\d){4}/gi;
        while(res=myReg.exec(con)){
            window.alert("index="+RegExp.index+" left="+RegExp.leftContext+" right="+RegExp.rightContext);
        }
    }

js的RegExp的反向

js引擎在匹配的时候,会把各个子表达式的内容捕获到内存暂存。

子表达式和捕获,反向引用的概念。

function test5(){
        var con=content.innerText;
        var myReg=/(\d)(\d)\2\1/gi;
        while(res=myReg.exec(con)){
            window.alert(res[0]);
        }
    }

请思考:aabbccdd找出这样的数。

var myReg=/(\d)\1(\d)\2(\d)\3(\d)\4/gi;
        while(res=myReg.exec(con)){
            window.alert(res[0]);
        }

匹配:五个数字加上一个-然后是如111222333这样的连续重复三次的9个数字

var myReg=/(\d){5}-(\d)\2\2(\d)\3\3(\d)\4\4/gi;
while(res=myReg.exec(con)){
            window.alert(res[0]);
        }

元字符

猜你喜欢

转载自www.cnblogs.com/liaoxiaolao/p/9807922.html