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 日期处理之时区问题
Oct 08 Javascript
SyntaxHighlighter语法高亮插件使用说明
Aug 14 Javascript
js、css、img等浏览器缓存问题的2种解决方案
Oct 23 Javascript
获得Javascript对象属性个数的示例代码
Nov 21 Javascript
javascript实现Table排序的方法
May 15 Javascript
JavaScript简单修改窗口大小的方法
Aug 03 Javascript
理解javascript中的with关键字
Feb 15 Javascript
Bootstrap栅格系统简单实现代码
Mar 06 Javascript
微信小程序开发之入门实例教程篇
Mar 07 Javascript
使用 jQuery 实现表单验证功能
Jul 05 jQuery
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 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编程网上资源导航
2006/10/09 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
php 函数中使用static的说明
2012/06/01 PHP
php无限极分类实现的两种解决方法
2013/04/28 PHP
基于Zend的Config机制的应用分析
2013/05/02 PHP
JQuery入门—JQuery程序的代码风格详细介绍
2013/01/03 Javascript
jquery遍历之parent()和parents()的区别及parentsUntil()方法详解
2013/12/02 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
Vue打包后访问静态资源路径问题
2019/11/08 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
python读取Android permission文件
2013/11/01 Python
Python的ORM框架SQLObject入门实例
2014/04/28 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
实例讲解Python3中abs()函数
2019/02/19 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
Python和Sublime整合过程图示
2019/12/25 Python
多个python文件调用logging模块报错误
2020/02/12 Python
python异常处理、自定义异常、断言原理与用法分析
2020/03/23 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
python interpolate插值实例
2020/07/06 Python
python 5个顶级异步框架推荐
2020/09/09 Python
Python类的继承super相关原理解析
2020/10/22 Python
Python实现简单的2048小游戏
2021/03/01 Python
HTML5之SVG 2D入门1—SVG(可缩放矢量图形)概述
2013/01/30 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
AmazeUI折叠式卡片布局,整合内容列表、表格组件实现
2020/08/20 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
夜大毕业自我鉴定
2013/10/11 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
志愿者个人总结
2015/03/03 职场文书
政协委员个人总结
2015/03/03 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python
Python中tqdm的使用和例子
2022/09/23 Python