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 相关文章推荐
才发现的超链接js导致网页中GIF动画停止的解决方法
Nov 02 Javascript
JavaScript 语言的递归编程
May 18 Javascript
jQuery 1.8 Release版本发布了
Aug 14 Javascript
JS记录用户登录次数实现代码
Jan 15 Javascript
jQuery操作DOM之获取表单控件的值
Jan 23 Javascript
jquery实现焦点图片随机切换效果的方法
Mar 12 Javascript
简介JavaScript中的push()方法的使用
Jun 09 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
Oct 09 Javascript
微信小程序 教程之引用
Oct 18 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
Angular请求防抖处理第一次请求失效问题
May 17 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音乐采集(部分代码)
2007/02/14 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
四种php中webservice实现的简单架构方法及实例
2015/02/03 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
Js+Jq获取URL参数的集中方法示例代码
2014/05/20 Javascript
基于JavaScript实现文字超出部分隐藏
2016/02/29 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
json定义及jquery操作json的方法
2016/09/29 Javascript
JS判断一个数是否是水仙花数
2017/06/11 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
angularjs实现分页和搜索功能
2018/01/03 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
python email smtplib模块发送邮件代码实例
2018/04/26 Python
python3编写ThinkPHP命令执行Getshell的方法
2019/02/26 Python
Python面向对象程序设计之类的定义与继承简单示例
2019/03/18 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
python数字类型math库原理解析
2020/03/02 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
Django ORM判断查询结果是否为空,判断django中的orm为空实例
2020/07/09 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
安装python依赖包psycopg2来调用postgresql的操作
2021/01/01 Python
CSS3 实现穿梭星空动画
2020/11/13 HTML / CSS
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
信息管理专业推荐信
2013/10/29 职场文书
物业门卫岗位职责
2013/12/28 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
免职通知
2015/04/23 职场文书
初中家长意见
2015/06/03 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技