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 相关文章推荐
33种Javascript 表格排序控件收集
Dec 03 Javascript
jQuery LigerUI 使用教程入门篇
Jan 18 Javascript
js window.open弹出新的网页窗口
Jan 16 Javascript
jQuery实现字符串按指定长度加入特定内容的方法
Mar 11 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
Jul 09 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
详解webpack+angular2开发环境搭建
Jun 28 Javascript
layer提示框添加多个按钮选择的实例
Sep 12 Javascript
layui实现数据表格隐藏列的示例
Oct 25 Javascript
微信小程序在text文本实现多种字体样式
Nov 08 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
Nov 14 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
Jul 27 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+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
php-beanstalkd消息队列类实例分享
2017/07/19 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
2019/07/24 PHP
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
JS实现AES加密并与PHP互通的方法分析
2017/04/19 Javascript
vue mixins组件复用的几种方式(小结)
2017/09/06 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
npm全局模块卸载及默认安装目录修改方法
2018/05/15 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
JavaScript模块管理的简单实现方式详解
2019/06/15 Javascript
node.js express框架简介与实现
2019/07/23 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
插入排序_Python与PHP的实现版(推荐)
2017/05/11 Python
利用Python如何生成hash值示例详解
2017/12/20 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
2019/09/15 Python
基于Tensorflow的MNIST手写数字识别分类
2020/06/17 Python
如何使用Pytorch搭建模型
2020/10/26 Python
html5中valid、invalid、required的定义
2014/02/21 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
总经理助理岗位职责
2013/11/08 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
餐饮营销方案
2014/02/23 职场文书
班长竞选演讲稿
2014/04/24 职场文书