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 相关文章推荐
[IE&amp;FireFox兼容]JS对select操作
Jan 07 Javascript
鼠标右击事件代码(asp.net后台)
Jan 27 Javascript
基于JQUERY的多级联动代码
Jan 24 Javascript
项目中常用的JS方法整理
Jan 30 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
Oct 09 Javascript
Vue通过URL传参如何控制全局console.log的开关详解
Dec 07 Javascript
使用use注册Vue全局组件和全局指令的方法
Mar 08 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
Mar 26 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
Jul 16 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
Aug 03 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
Aug 10 Javascript
如何选择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
phpMyAdmin 安装配置方法和问题解决
2009/06/08 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
使用JavaScript检测Firefox浏览器是否启用了Firebug的代码
2010/12/28 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
layui表格数据重载
2019/07/27 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
javascript设计模式 ? 命令模式原理与用法实例分析
2020/04/20 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python原始套接字编程示例分享
2014/02/21 Python
基于Python中capitalize()与title()的区别详解
2017/12/09 Python
python中的turtle库函数简单使用教程
2018/07/23 Python
python覆盖写入,追加写入的实例
2019/06/26 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
python利用 keyboard 库记录键盘事件
2020/10/16 Python
巴西食品补充剂在线零售商:Músculos na Web
2017/08/07 全球购物
三星印度官网:Samsung印度
2019/08/03 全球购物
校园广播稿精选
2014/10/01 职场文书
2015年工程师工作总结
2015/04/30 职场文书
企业文化学习心得体会
2016/01/21 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
如何使用vue3打造一个物料库
2021/05/08 Vue.js
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
浅谈Redis 中的过期删除策略和内存淘汰机制
2022/04/03 Redis