js正則表達式之$1$2$3$4$5$6$7$8$9屬性,返回子匹配的結(jié)果
更新時間:2012年10月12日 13:58:36 作者:
$1-$9存放著正則表達式中最近的9個正則表達式的匹配結(jié)果,這些結(jié)果按照子匹配的出現(xiàn)順序依次排列
功能:$1-$9存放著正則表達式中最近的9個正則表達式的匹配結(jié)果,這些結(jié)果按照子匹配的出現(xiàn)順序依次排列。
基本語法RegExp.$n
注意:這些屬性是靜態(tài)的,除了replace中的第二個參數(shù)可以省略RegExp之外,其他地方使用都要加上RegExp。
案例講解:demo1
<html>
<script language="javascript" type="text/javascript">
//創(chuàng)建要進行匹配的字符串
var objStr="這是我的手機號13100000000"
//創(chuàng)建正則表達式匹配手機號碼
var re=/(13)(/d)(/d{8})/;//該正則表達式可以匹配手機號碼以13開頭的11為號碼以()為子匹配的標志
document.write(objStr.replace(re,"$1$2********"));//處于隱私對字符串按照正則表達式的內(nèi)容進行替換
//如果第二個子匹配結(jié)果,即手機號碼中的第三位數(shù)字小于等于3則該手機號為聯(lián)通號碼,否則為其他運營商的號碼
if(RegExp.$2<=3){
document.write("這是聯(lián)通手機號");
}else{
document.write("這是移動或者電信手機號");
}
</script>
</html>
但是沒進行一次匹配$n的值就改變一次,因此當我們匹配在一個字符串中出現(xiàn)多個手機號碼時我們需要這樣匹配
案例講解demo2
<html>
<script language="javascript" type="text/javascript">
//創(chuàng)建一個需要匹配的字符串
var objStr="這是我的手機號碼13112345678, 這是我朋友的手機號碼13912345678";
//創(chuàng)建匹配手機號碼的正則表達式對象,隱式創(chuàng)建
var reg=/(13)(/d)(/d{8})/g;//g為全局匹配參數(shù),匹配11位手機號碼;
//將字符串進行匹配如果符合結(jié)果則將返回結(jié)果放入數(shù)組中
var arr=objStr.match(reg);
with(document){
if(arr!=null){//如果匹配有結(jié)果
write("檢測到"+arr.length+"個手機號碼");//顯示匹配到多少個電話號碼
//循環(huán)輸出各個結(jié)果,并且判斷運營商
for(var i=0;i<arr.length;i++){
//對匹配出來的電話號碼進行二次匹配,獲取號碼的第三個數(shù)字
arr[i]=arr[i].toString().replace(reg,"$1$2********");
//以列表的形式輸出各個電話號碼
write("<li>"+arr[i]);
//如果第三個電話號碼小于等于3則該電話號碼為聯(lián)通號碼,否則為其他運營商的號碼
if(RegExp.$2<=3){
write("這是一個聯(lián)通手機號碼!");
}else{
write("這是一個移動或者電信手機號碼!");
}
}//for循環(huán)的結(jié)束
}//if的結(jié)束
}//with的結(jié)束
</script>
</html>
希望大家多多練習(xí),有什么問題可以留言,我會盡全力幫助大家解決的!
基本語法RegExp.$n
注意:這些屬性是靜態(tài)的,除了replace中的第二個參數(shù)可以省略RegExp之外,其他地方使用都要加上RegExp。
案例講解:demo1
復(fù)制代碼 代碼如下:
<html>
<script language="javascript" type="text/javascript">
//創(chuàng)建要進行匹配的字符串
var objStr="這是我的手機號13100000000"
//創(chuàng)建正則表達式匹配手機號碼
var re=/(13)(/d)(/d{8})/;//該正則表達式可以匹配手機號碼以13開頭的11為號碼以()為子匹配的標志
document.write(objStr.replace(re,"$1$2********"));//處于隱私對字符串按照正則表達式的內(nèi)容進行替換
//如果第二個子匹配結(jié)果,即手機號碼中的第三位數(shù)字小于等于3則該手機號為聯(lián)通號碼,否則為其他運營商的號碼
if(RegExp.$2<=3){
document.write("這是聯(lián)通手機號");
}else{
document.write("這是移動或者電信手機號");
}
</script>
</html>
但是沒進行一次匹配$n的值就改變一次,因此當我們匹配在一個字符串中出現(xiàn)多個手機號碼時我們需要這樣匹配
案例講解demo2
復(fù)制代碼 代碼如下:
<html>
<script language="javascript" type="text/javascript">
//創(chuàng)建一個需要匹配的字符串
var objStr="這是我的手機號碼13112345678, 這是我朋友的手機號碼13912345678";
//創(chuàng)建匹配手機號碼的正則表達式對象,隱式創(chuàng)建
var reg=/(13)(/d)(/d{8})/g;//g為全局匹配參數(shù),匹配11位手機號碼;
//將字符串進行匹配如果符合結(jié)果則將返回結(jié)果放入數(shù)組中
var arr=objStr.match(reg);
with(document){
if(arr!=null){//如果匹配有結(jié)果
write("檢測到"+arr.length+"個手機號碼");//顯示匹配到多少個電話號碼
//循環(huán)輸出各個結(jié)果,并且判斷運營商
for(var i=0;i<arr.length;i++){
//對匹配出來的電話號碼進行二次匹配,獲取號碼的第三個數(shù)字
arr[i]=arr[i].toString().replace(reg,"$1$2********");
//以列表的形式輸出各個電話號碼
write("<li>"+arr[i]);
//如果第三個電話號碼小于等于3則該電話號碼為聯(lián)通號碼,否則為其他運營商的號碼
if(RegExp.$2<=3){
write("這是一個聯(lián)通手機號碼!");
}else{
write("這是一個移動或者電信手機號碼!");
}
}//for循環(huán)的結(jié)束
}//if的結(jié)束
}//with的結(jié)束
</script>
</html>
希望大家多多練習(xí),有什么問題可以留言,我會盡全力幫助大家解決的!
您可能感興趣的文章:
相關(guān)文章
幾個小例子教你如何實現(xiàn)正則表達式highlight高亮
正則表達式,用起來還是挺方便的。正則技能,你值得擁有??!2014-05-05正則表達式實現(xiàn)匹配連續(xù)數(shù)字的方法
我這兩天剛剛學(xué)正則表達式。我覺的正則對連續(xù)的字符匹配很簡單,但是對連續(xù)的一段數(shù)字匹配就不是很好。正好最近有朋友問了匹配連續(xù)數(shù)字的正則,就幫忙寫了一下,算是當作溫習(xí)一下吧。下面這篇文章就主要介紹了正則表達式實現(xiàn)匹配連續(xù)數(shù)字的方法。2017-01-01正則表達式學(xué)習(xí)參考 正則入門學(xué)習(xí)資料
正則表達式(Regular Expression)是一種匹配模式,描述的是一串文本的特征2012-10-10