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 相关文章推荐
js中关于new Object时传参的一些细节分析
Mar 13 Javascript
前端微信支付js代码
Jul 25 Javascript
浅谈JS中的三种字符串连接方式及其性能比较
Sep 02 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
Dec 17 Javascript
JS实现的合并多个数组去重算法示例
Apr 11 Javascript
总结javascript三元运算符知识点
Sep 28 Javascript
JS图片懒加载的优点及实现原理
Jan 10 Javascript
JavaScript中继承原理与用法实例入门
May 09 Javascript
24个ES6方法解决JS实际开发问题(小结)
May 31 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
Nov 12 Javascript
小程序实现文字循环滚动动画
Jun 14 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读取txt文件的内容并赋值给数组的代码
2011/11/03 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
PHP中操作ini配置文件的方法
2013/04/25 PHP
Zend Framework实现多文件上传功能实例
2016/03/21 PHP
Javascript 复制数组实现代码
2009/11/26 Javascript
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
2013/08/21 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
Python读取mp3中ID3信息的方法
2015/03/05 Python
python3实现抓取网页资源的 N 种方法
2017/05/02 Python
python得到windows自启动列表的方法
2018/10/14 Python
对python捕获ctrl+c手工中断程序的两种方法详解
2018/12/26 Python
利用anaconda保证64位和32位的python共存
2021/03/09 Python
python3图片文件批量重命名处理
2019/10/31 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
Python 爬取淘宝商品信息栏目的实现
2021/02/06 Python
小学教师师德感言
2014/02/10 职场文书
国窖1573广告词
2014/03/21 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
党员证明信
2015/06/19 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
开学典礼校长致辞
2015/07/29 职场文书
车位出租协议书范本
2016/03/19 职场文书
技术入股协议书
2016/03/22 职场文书
开网店计划分析
2019/07/30 职场文书
JavaScript如何利用Promise控制并发请求个数
2021/05/14 Javascript
总结python多进程multiprocessing的相关知识
2021/06/29 Python
利用Python实现模拟登录知乎
2022/05/25 Python