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 相关文章推荐
解析jquery获取父窗口的元素
Jun 26 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
Nov 02 Javascript
基于jQuery实现左侧菜单栏可折叠功能
Dec 27 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
jQuery操作之效果详解
May 19 jQuery
web前端vue filter 过滤器
Jan 12 Javascript
vue.js删除列表中的一行
Jun 30 Javascript
vue-router中的hash和history两种模式的区别
Jul 17 Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 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
Google Voice 短信发送接口PHP开源版(2010.5更新)
2010/07/22 PHP
smarty模板嵌套之include与fetch性能测试
2010/12/05 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
PHP+mysql防止SQL注入的方法小结
2019/04/27 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
微博@符号的用户名提示效果。(想@到谁?)
2010/11/05 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
jquery得到iframe src属性值的方法
2014/09/25 Javascript
javascript面向对象之this关键词用法分析
2015/01/13 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
2017/01/18 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
python安装本地whl的实例步骤
2019/10/12 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
python目标检测给图画框,bbox画到图上并保存案例
2020/03/10 Python
django项目中新增app的2种实现方法
2020/04/01 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
canvas绘制圆角头像的实现方法
2019/01/17 HTML / CSS
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
生产部统计员岗位职责
2014/01/05 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
党支部换届选举方案
2014/05/08 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
捐书活动倡议书
2015/04/27 职场文书
《刷子李》教学反思
2016/02/20 职场文书