js正则表达式之$1$2$3$4$5$6$7$8$9属性,返回子匹配的结果

功能:$1-$9存放着正则表达式中最近的9个正则表达式的匹配结果,这些结果按照子匹配的出现顺序依次排列。 

基本语法RegExp.$n 

注意:这些属性是静态的,除了replace中的第二个参数可以省略RegExp之外,其他地方使用都要加上RegExp。

<html> 
<script language="javascript" type="text/javascript"> 
//创建要进行匹配的字符串 
var objStr="这是我的手机号13100000000" 
//创建正则表达式匹配手机号码 
var re=/(13)(/d)(/d{8})/;//该正则表达式可以匹配手机号码以13开头的11为号码以()为子匹配的标志 
document.write(objStr.replace(re,"$1$2********"));//处于隐私对字符串按照正则表达式的内容进行替换 
//如果第二个子匹配结果,即手机号码中的第三位数字小于等于3则该手机号为联通号码,否则为其他运营商的号码 
if(RegExp.$2<=3){ 
document.write("这是联通手机号"); 
}else{ 
document.write("这是移动或者电信手机号"); 
} 
</script> 
</html> 

但是没进行一次匹配$n的值就改变一次,因此当我们匹配在一个字符串中出现多个手机号码时我们需要这样匹配 
<html> 
<script language="javascript" type="text/javascript"> 
//创建一个需要匹配的字符串 
var objStr="这是我的手机号码13112345678, 这是我朋友的手机号码13912345678"; 
//创建匹配手机号码的正则表达式对象,隐式创建 
var reg=/(13)(/d)(/d{8})/g;//g为全局匹配参数,匹配11位手机号码; 
//将字符串进行匹配如果符合结果则将返回结果放入数组中 
var arr=objStr.match(reg); 
with(document){ 
if(arr!=null){//如果匹配有结果 
write("检测到"+arr.length+"个手机号码");//显示匹配到多少个电话号码 
//循环输出各个结果,并且判断运营商 
for(var i=0;i<arr.length;i++){ 
//对匹配出来的电话号码进行二次匹配,获取号码的第三个数字 
arr[i]=arr[i].toString().replace(reg,"$1$2********"); 
//以列表的形式输出各个电话号码 
write("<li>"+arr[i]); 
//如果第三个电话号码小于等于3则该电话号码为联通号码,否则为其他运营商的号码 
if(RegExp.$2<=3){ 
write("这是一个联通手机号码!"); 
}else{ 
write("这是一个移动或者电信手机号码!"); 
} 
}//for循环的结束 
}//if的结束 
}//with的结束 
</script> 
</html> 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
普通的JS正则表达式用来在字符串中匹配特定的模式。在JS中,我们可以使用正则表达式字面量或者RegExp构造函数来创建正则表达式正则表达式有两个常用方法exec和test。 当正则是全局匹配时,每一次匹配完成后,都会修改lastIndex属性。例如,下面的代码展示了使用test方法来匹配字符串并查看lastIndex的变化: var regex = /a/g; console.log( regex.test("a"), regex.lastIndex ); // => true 1 console.log( regex.test("aba"), regex.lastIndex ); // => true 3 console.log( regex.test("ababc"), regex.lastIndex ); // => false 0 如果没有全局标志g,正则表达式会从字符串的第0个字符开始尝试匹配。例如,下面的代码展示了在没有全局标志g的情况下,使用test方法进行匹配时lastIndex的变化: var regex = /a/; console.log( regex.test("a"), regex.lastIndex ); // => true 0 console.log( regex.test("aba"), regex.lastIndex ); // => true 0 console.log( regex.test("ababc"), regex.lastIndex ); // => true 0 除了test方法,我们也可以使用exec方法来执行正则表达式匹配。exec方法返回一个数组,数组的第一个元素是匹配到的字符串,后面的元素是捕获组的匹配结果。 有时候我们需要构建动态的正则表达式,这时可以使用RegExp构造函数。例如,下面的代码展示了使用RegExp构造函数来构建正则表达式: var className = "high"; var regex = new RegExp("(^|\\s)" + className + "(\\s|$)"); console.log( regex.source ) // => (^|\s)high(\s|$) 在正则表达式中,^表示匹配字符串的开始,$表示匹配字符串的结束。当我们想要整体匹配时,需要同时使用^和$。 <span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [第七章 正则表达式编程](https://blog.csdn.net/qq_40241957/article/details/98767510)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值