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 相关文章推荐
window.js 主要包含了页面的一些操作
Dec 23 Javascript
js判断两个日期是否相等的方法
Sep 10 Javascript
javascript函数重载解决方案分享
Feb 19 Javascript
JQuery页面地址处理插件jqURL详解
May 03 Javascript
jquery实现的美女拼图游戏实例
May 04 Javascript
JavaScript关于提高网站性能的几点建议(一)
Jul 24 Javascript
Ionic3 UI组件之autocomplete详解
Jun 08 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
Aug 10 jQuery
Angular2的管道Pipe的使用方法
Nov 07 Javascript
微信小程序实现时间预约功能
Nov 27 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
小程序自定义模板实现吸顶功能
Jan 08 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
8个出色的WordPress SEO插件收集
2011/02/26 PHP
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
2011/11/02 PHP
php中使用sftp教程
2015/03/30 PHP
php 判断页面或图片是否经过gzip压缩的方法
2017/04/05 PHP
老生常谈PHP面向对象之标识映射
2017/06/21 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
asp javascript 实现关闭窗口时保存数据的办法
2007/11/24 Javascript
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
JS实现切换标签页效果实例代码
2013/11/01 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
js利用clipboardData实现截屏粘贴功能
2016/10/12 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
javascript数据结构中栈的应用之符号平衡问题
2017/04/11 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
Python文件操作,open读写文件,追加文本内容实例
2016/12/14 Python
python脚本替换指定行实现步骤
2017/07/11 Python
对numpy中的数组条件筛选功能详解
2018/07/02 Python
python 获取微信好友列表的方法(微信web)
2019/02/21 Python
Django项目中实现使用qq第三方登录功能
2019/08/13 Python
Python小白垃圾回收机制入门
2020/06/09 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
联想马亚西亚官方网站:Lenovo Malaysia
2018/09/19 全球购物
全球性的女装店:storets
2019/06/12 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
客户代表自我评价范例
2013/09/24 职场文书
《兰亭集序》教学反思
2014/02/11 职场文书
融资合作协议书范本
2014/10/17 职场文书
校园开放日新闻稿
2015/07/17 职场文书