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

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

  基本语法RegExp.$n

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

  案例讲解:demo1

  

复制代码 代码如下:

  <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的值就改变一次,因此当我们匹配在一个字符串中出现多个手机号码时我们需要这样匹配

  案例讲解demo2

  

复制代码 代码如下:

  <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>

  希望大家多多练习,有什么问题可以留言,我会尽全力帮助大家解决的!