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进度条示例
Apr 28 Javascript
实例讲解JQuery中this和$(this)区别
Dec 08 Javascript
纯javascript实现图片延时加载方法
Aug 21 Javascript
javascript判断图片是否加载完成的方法推荐
May 13 Javascript
js仿淘宝和百度文库的评分功能
May 15 Javascript
Bootstrap基本样式学习笔记之按钮(4)
Dec 07 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
Angularjs的键盘事件的绑定
Jul 27 Javascript
基于JavaScript实现飘落星星特效
Aug 10 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
Apr 30 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
Sep 23 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数组总结篇(一)
2008/09/30 PHP
PHP正确配置mysql(apache环境)
2011/08/28 PHP
用PHP实现Ftp用户的在线管理
2012/02/16 PHP
对象失去焦点时自己动提交数据的实现代码
2012/11/06 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
使用jquery的jsonp如何发起跨域请求及其原理详解
2017/08/17 jQuery
nodejs使用express获取get和post传值及session验证的方法
2017/11/09 NodeJs
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
js实现简单商品筛选功能
2021/02/02 Javascript
python共享引用(多个变量引用)示例代码
2013/12/04 Python
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
python实现在sqlite动态创建表的方法
2015/05/08 Python
详解在Python中处理异常的教程
2015/05/24 Python
python中根据字符串调用函数的实现方法
2016/06/12 Python
Python标准库笔记struct模块的使用
2018/02/22 Python
解决python "No module named pip" 的问题
2018/10/13 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
容易被忽略的Python内置类型
2020/09/03 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
涉外经济法专业毕业生推荐信
2013/11/24 职场文书
建筑总经理岗位职责
2014/02/02 职场文书
职业生涯规划书范文
2014/03/10 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
死者家属慰问信
2015/03/24 职场文书
会计求职自荐信
2015/03/26 职场文书
2015年幼儿园班主任工作总结
2015/05/12 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
解决python3安装pandas出错的问题
2021/05/20 Python
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server