1. 程式人生 > >js正則表示式(2)

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

元字元