javascript正则表达式之分组概念与用法实例


Posted in Javascript onJune 16, 2016

本文实例讲述了javascript正则表达式之分组概念与用法。分享给大家供大家参考,具体如下:

function matchDemo(){
  var s;
  //该表达式分了三个组:d(b+)(d)、(b+)、(d)这个三个组(实际上是四个组,包括本身所有的表达式)
  //从最左边数第一个括号为第一个组,第二个括号为第二组,以此类推,分别对应的值为RegExp.$1和RegExp.$2的值
  var re = new RegExp("(d(b+)(d))","ig");
  var str = "cdbBdbsbdbdz";
  //exec()返回的值是符合表达式查找出来的一个数组
  var arr = re.exec(str);
  //符合d(b+)(d)这个表达式返回的值
  s = "$1 contains: " + RegExp.$1 + ", RegExp.$1 : " + RegExp.$1.length + "\n";
  //符合(b+)这个表达式返回的值
  s += "$2 contains: " + RegExp.$2 + ", RegExp.$2 : " + RegExp.$2 + "\n";
  //符合(d)这个表达式返回的值
  s += "$3 contains: " + RegExp.$3 + ", RegExp.$3 : " + RegExp.$3;
  //得到匹配字符串最后一个字符在字符串中的位置,也就是下次匹配开始位置
  alert(RegExp.lastIndex);
  //如果存在值,则返回的是最后一个分组的结果(返回任何正则表达式查找过程中最后括的子匹配)
  alert(RegExp.lastParen);
  //得到最后匹配的字符串(返回任何正则表达式搜索过程中的最后匹配的字符)
  alert(RegExp.lastMatch);
  //leftContext + lastMatch + rightContext == context
  alert(RegExp.leftContext);
  alert(RegExp.rightContext);
  //得到的结果为第二个分组的结果
  alert(RegExp.$2);
  return(s);
}
alert(matchDemo());
function matchDemo2(){
  var s,temp;
  //该结果分为两个组(b+)、(d),当然还包括全部(d(b+)(d))为默认的组
  var re = new RegExp("d(b+)(d)","ig");
  var str = "cdbBdbsbdbdz";
  //arr的结果包括三个组(包括全部的模式)返回的结果
  //dbBd、bB、d和dbd、b、d这两个模式匹配,而第二个和第三个数组实际上就是在第一个的基础上匹配(b+)、(d)这两个模式
  //也就是说分组是在全匹配的模式下再进行匹配,起到"筛选"的功能
  while((arr = re.exec(str)) != null)
  {
      alert(arr);
      temp = "$1 contains: " + RegExp.$1 + ", RegExp.$1.length : " + RegExp.$1.length + ",RegExp.$1.lastIndex:" + RegExp.$1.lastIndex; 
      alert(temp);
      //$2属性表示的是匹配第二个分组,即(d)这个模式
      s = "$2 contains: " + RegExp.$2 + ", RegExp.$2.length : " + RegExp.$2.length;
      alert(s);
  }
}
matchDemo2();

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
Prototype Selector对象学习
Jul 23 Javascript
JQuery实现动态表格点击按钮表格增加一行
Aug 24 Javascript
jQuery遍历节点树方法分析
Sep 08 Javascript
jquery中用jsonp实现搜索框功能
Oct 18 Javascript
js实现简单的网页换肤效果
Jan 18 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 Javascript
ES6中的rest参数与扩展运算符详解
Jul 18 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
Jan 10 Javascript
解决vue页面DOM操作不生效的问题
Mar 17 Javascript
vue.js 中使用(...)运算符报错的解决方法
Aug 09 Javascript
js实现web调用摄像头 js截取视频画面
Apr 21 Javascript
Antd下拉选择,自动匹配功能的实现
Oct 24 Javascript
js学习阶段总结(必看篇)
Jun 16 #Javascript
原生js封装二级城市下拉列表的实现代码
Jun 16 #Javascript
jQuery获取剪贴板内容的方法
Jun 16 #Javascript
javascript作用域、作用域链(菜鸟必看)
Jun 16 #Javascript
全面理解JavaScript中的继承(必看)
Jun 16 #Javascript
深入浅析JS的数组遍历方法(推荐)
Jun 15 #Javascript
JavaScript对象数组排序实例方法浅析
Jun 15 #Javascript
You might like
PHP获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
php实现window平台的checkdnsrr函数
2015/05/27 PHP
php实现处理输入转义字符的代码
2015/11/08 PHP
PHP+MySQL存储数据常见中文乱码问题小结
2016/06/13 PHP
php array_values 返回数组的所有值详解及实例
2016/11/12 PHP
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
jquery的ajax简单结构示例代码
2014/02/17 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
JS html时钟制作代码分享
2017/03/03 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
javascript实现计算器功能
2020/03/30 Javascript
django 创建过滤器的实例详解
2017/08/14 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
Python代码实现删除一个list里面重复元素的方法
2019/04/02 Python
python创建n行m列数组示例
2019/12/02 Python
基于python+selenium的二次封装的实现
2020/01/06 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
工程管理专业个人求职信范文
2013/12/07 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
个人考核材料
2014/05/15 职场文书
关于读书的演讲稿1000字
2014/08/27 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
财务部岗位职责范本
2015/04/14 职场文书