JS中使用正则表达式g模式和非g模式的区别


Posted in Javascript onApril 01, 2017

先给大家说下js正则表达式中的g到底是什么意思

g是global的缩写啊!

就是匹配全部可匹配结果,

如果你不带g,在正则过程中,字符串是从左至右匹配的,如果匹配成功就不再继续向右匹配了,如果你带g,它会重头到尾的把正确匹配的字符串挑选出来

例如:

var str = 'aaaaaaaa'
var reg1 = /a/
var reg2 = /a/g
str.match(reg1)  // 结果为:["a", index: 0, input: "aaaaaaaa"]
str.match(reg2)  // 结果为:["a", "a", "a", "a", "a", "a", "a", "a"]

js正则表达式g模式与非g模式的区别,具体代码如下所示:

<!DOCTYPE html> 
<html> 
<head lang="en"> 
  <meta charset="UTF-8"> 
  <title>mischen</title> 
  <script> 
    //js中使用正则表达式 
    function test(){ 
      //生成正则表达式对象; 
      // 在g模式下,正则表达式对象的exec和test方法,依赖 正则表达式对象的lastIndex属性,而lastIndex会根据我们exec 
      // 和test的执行 发生偏移  如果没有相应匹配  lastIndex 重归0 
      //在非g模式下,正则表达式对象的exec和test方法, lastIndex 不会发生偏移 
      //exec方法 如果正则表达式中 有分组  第一个返回的是 匹配到的字符串 后面是根据分组分别返回的匹配的 字符串 
      var reg=new RegExp("\\d+[a-z]+","ig"); //字符串里 \ 表示转译 
      var str="123abc123def"; 
      alert(reg.lastIndex);//0 
      alert(reg.exec(str));//123abc 
      alert(reg.lastIndex);//6 
      alert(reg.test(str));//true 
      alert(reg.lastIndex);//12 
    } 
   // test(); 
    test1(); 
    function test1(){ 
      //非g模式下使用 exec 和test 
      var reg=new RegExp("\\d+[a-z]+","i"); 
      var str="123abc123def"; 
//      alert(reg.lastIndex);//0 
//      alert(reg.exec(str));//123abc 
//      alert(reg.lastIndex);//0 
//      alert(reg.test(str));//true 
//      alert(reg.lastIndex);//0 
//      alert(reg.exec(str));//123abc 
//      alert(reg.lastIndex);//0 
//      alert(reg.test(str));//true 
//      alert(reg.lastIndex);//0 
      var reg=new RegExp("(\\d+)([a-z]+)","i"); 
      alert(reg.exec(str));//123abc,123,abc 
      alert(reg.exec(str));//123abc,123,abc 
    } 
  </script> 
</head> 
<body> 
</body> 
</html>

以上所述是小编给大家介绍的JS中使用正则表达式g模式和非g模式的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(5)
Dec 23 Javascript
js计算精度问题小结
Apr 22 Javascript
jQuery中使用each处理json数据
Apr 23 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
原生js实现鼠标跟随效果
Feb 28 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
详解PHP后期静态绑定分析与应用
Mar 21 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
JS实现查找数组中对象的属性值是否存在示例
May 24 Javascript
js模拟F11页面全屏显示
Sep 17 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 Javascript
vue实现简易计算器功能
Jan 20 Vue.js
如何选择jQuery版本 1.x? 2.x? 3.x?
Apr 01 #jQuery
微信小程序网络请求的封装与填坑之路
Apr 01 #Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
Apr 01 #Javascript
Node.js之网络通讯模块实现浅析
Apr 01 #Javascript
vue-cli+webpack记事本项目创建
Apr 01 #Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
Apr 01 #Javascript
Vue.js实战之Vuex的入门教程
Apr 01 #Javascript
You might like
全国FM电台频率大全 - 14 江西省
2020/03/11 无线电
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
windows下配置php5.5开发环境及开发扩展
2014/12/25 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
js获取事件源及触发该事件的对象
2013/10/24 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
JQuery1.8 判断元素是否绑定事件的方法
2014/07/10 Javascript
js实现数组转换成json
2015/06/26 Javascript
基于JavaScript代码实现自动生成表格
2016/06/15 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
jQuery 禁止表单用户名、密码自动填充功能
2017/10/30 jQuery
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
React实现全选功能
2020/08/25 Javascript
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
闭包在python中的应用之translate和maketrans用法详解
2014/08/27 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
pygame实现雷电游戏雏形开发
2018/11/20 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
CSS3效果:自定义“W”形运行轨迹实例
2017/03/29 HTML / CSS
刑事代理授权委托书
2014/09/17 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
先进个人材料怎么写
2014/12/30 职场文书
用电申请报告范文
2015/05/18 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
python批量更改目录名/文件名的方法
2021/04/18 Python
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
详解JS ES6编码规范
2021/05/07 Javascript
浅谈Python数学建模之整数规划
2021/06/23 Python