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 相关文章推荐
javascript实现字符串反转的方法
Feb 05 Javascript
JavaScript中setUTCFullYear()方法的使用简介
Jun 12 Javascript
jQuery设置Easyui校验规则(推荐)
Nov 21 Javascript
微信小程序progress组件使用详解
Jan 31 Javascript
Javascript实现运算符重载详解
Apr 07 Javascript
详解Require.js与Sea.js的区别
Aug 05 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
JavaScript常见鼠标事件与用法分析
Jan 03 Javascript
extract-text-webpack-plugin用法详解
Feb 14 Javascript
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 Javascript
Node.js中的异步生成器与异步迭代详解
Jan 31 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+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP自动生成缩略图函数的源码示例
2019/03/18 PHP
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
jquery对象访问是什么及使用方法介绍
2016/05/03 Javascript
JS实现的多张图片轮流播放幻灯片效果
2016/07/22 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
在Python中使用HTML模版的教程
2015/04/29 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
python Pandas 读取txt表格的实例
2018/04/29 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python 中xpath爬虫实例详解
2019/08/26 Python
python 实现turtle画图并导出图片格式的文件
2019/12/07 Python
python 在threading中如何处理主进程和子线程的关系
2020/04/25 Python
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
博柏利美国官方网站:Burberry美国
2020/11/19 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
外贸业务员的岗位职责
2013/11/23 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
中国入世承诺
2014/04/01 职场文书
民政局办理协议离婚(范本)
2014/10/25 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
小学生家长意见
2015/06/03 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
通讯稿范文
2015/07/22 职场文书
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python