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实现无限级select联动菜单
Jan 02 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
js获取本机操作系统类型的两种方法
Dec 19 Javascript
浅析JS运动
Dec 28 Javascript
详解AngularJS如何实现跨域请求
Aug 22 Javascript
JS字符串false转boolean的方法(推荐)
Mar 08 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
javascript 中模板方法单例的实现方法
Oct 17 Javascript
JavaScript面向对象程序设计创建对象的方法分析
Aug 13 Javascript
NestJs 静态目录配置详解
Mar 12 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
jquery实现图片放大镜效果
Dec 23 jQuery
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 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
jquery获得下拉框值的代码
2011/08/13 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
js如何判断访问是来自搜索引擎(蜘蛛人)还是直接访问
2015/09/14 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
Angular实现下载安装包的功能代码分享
2017/09/05 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
2018/04/22 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
python生成ppt的方法
2018/06/07 Python
如何用C代码给Python写扩展库(Cython)
2019/05/17 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
加拿大在线眼镜零售商:SmartBuyGlasses加拿大
2019/05/25 全球购物
Shell如何接收变量输入
2012/09/24 面试题
外贸销售员求职的自我评价
2013/11/23 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
文明倡议书范文
2014/04/15 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
招标保密承诺书
2015/01/20 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
Python中rapidjson参数校验实现
2021/07/25 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL