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 相关文章推荐
juqery 学习之三 选择器 子元素与表单
Nov 25 Javascript
Jquery实现带动画效果的经典二级导航菜单
Mar 22 Javascript
js 窗口抖动示例
Sep 04 Javascript
javascript实现的元素拖动函数宿主为浏览器
Jul 21 Javascript
使用Bootstrap typeahead插件实现搜索框自动补全的方法
Jul 07 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
Aug 15 Javascript
jQuery扇形定时器插件pietimer使用方法详解
Jul 18 jQuery
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
JS实现统计字符串中字符出现个数及最大个数功能示例
Jun 04 Javascript
Vue 项目分环境打包的方法示例
Aug 03 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
Apr 26 Javascript
javascript实现动态时钟的启动和停止
Jul 29 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
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
单台服务器的PHP进程之间实现共享内存的方法
2014/06/13 PHP
PHP实现货币换算的方法
2014/11/29 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
2015/04/01 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
AJAX架构之Dojo篇
2007/04/10 Javascript
SWFObject 2.1以上版本语法介绍
2010/07/10 Javascript
jquery实现居中弹出层代码
2010/08/25 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
全面解析vue中的数据双向绑定
2017/05/10 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
2018/03/19 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
21行Python代码实现拼写检查器
2016/01/25 Python
Python中进程和线程的区别详解
2017/10/29 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
Python实现计算圆周率π的值到任意位的方法示例
2018/05/08 Python
python的concat等多种用法详解
2018/11/28 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
python实现按首字母分类查找功能
2019/10/31 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
计算机专业毕业生求职信分享
2013/12/24 职场文书
团结演讲稿范文
2014/05/23 职场文书
群众路线个人自我剖析材料
2014/10/07 职场文书
优秀党员推荐材料
2014/12/18 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
Python代码实现双链表
2022/05/25 Python
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers