js正則表示式(2)
阿新 • • 發佈:2018-11-11
找到以某個字串開頭的字串
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()方法
返回第一個匹配到的文字的起始位置。
varstr="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]); }
元字元