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 相关文章推荐
查找iframe里元素的方法可传参
Sep 11 Javascript
JS实现遮罩层效果的简单实例
Nov 12 Javascript
node.js中的fs.futimes方法使用说明
Dec 17 Javascript
如何减少浏览器的reflow和repaint
Feb 26 Javascript
高性能JavaScript 重排与重绘(2)
Aug 11 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
Nov 26 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的方法
Nov 29 Javascript
实例分析JS与Node.js中的事件循环
Dec 12 Javascript
webpack实用小功能介绍
Jan 02 Javascript
Babel 入门教程学习笔记
Jun 13 Javascript
对angularJs中$sce服务安全显示html文本的实例
Sep 30 Javascript
纯js实现无缝滚动功能代码实例
Feb 21 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流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
用JavaScript实现用一个DIV来包装文本元素节点
2014/09/09 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
基于EasyUI的基础之上实现树形功能菜单
2017/06/28 Javascript
requireJS模块化实现返回顶部功能的方法详解
2017/10/16 Javascript
JS实现简单获取最近7天和最近3天日期的方法
2018/04/18 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
vue框架制作购物车小球动画效果实例代码
2019/09/26 Javascript
javascript中call,apply,bind的区别详解
2020/12/11 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
python Django批量导入数据
2016/03/25 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
Django 批量插入数据的实现方法
2020/01/12 Python
Pycharm debug调试时带参数过程解析
2020/02/03 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
python能否java成为主流语言吗
2020/06/22 Python
解决python3中os.popen()出错的问题
2020/11/19 Python
彻底解决pip下载pytorch慢的问题方法
2021/03/01 Python
自荐书模板
2013/12/19 职场文书
继电保护工岗位职责
2014/01/05 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
教学质量月活动总结
2015/05/11 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
2016年社区综治宣传月活动总结
2016/03/16 职场文书
解析Redis Cluster原理
2021/06/21 Redis
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫
MySQL去除密码登录告警的方法
2022/04/20 MySQL