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 相关文章推荐
js函数参数设置默认值的一种变通实现方法
May 26 Javascript
页面刷新时记住滚动条的位置jquery代码
Jun 17 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
Dec 07 Javascript
Bootstrap导航条的使用和理解3
Dec 14 Javascript
javascript算法之二叉搜索树的示例代码
Sep 12 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
Jan 22 Javascript
浅谈监听单选框radio改变事件(和layui中单选按钮改变事件)
Sep 10 Javascript
vue keep-alive列表页缓存 详情页返回上一页不刷新,定位到之前位置
Nov 26 Javascript
vue prop传值类型检验方式
Jul 30 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
Nov 05 Javascript
js+html+css实现手动轮播和自动轮播
Dec 30 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
ZF等常用php框架中存在的问题
2008/01/10 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
2011/11/02 PHP
用php实现百度网盘图片直链的代码分享
2012/11/01 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
2014/06/12 PHP
浅析ThinkPHP中execute和query方法的区别
2014/06/13 PHP
php定界符
2014/06/19 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
索趣科技的答案
2007/02/07 Javascript
javascript web页面刷新的方法收集
2009/07/02 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
详解微信小程序 template添加绑定事件
2017/06/23 Javascript
常见的浏览器Hack技巧整理
2017/06/29 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
2018/01/05 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
Javascript 实现 Excel 导入生成图表功能
2018/10/22 Javascript
解决 viewer.js 动态更新图片导致无法预览的问题
2019/05/14 Javascript
js实现简单点赞操作
2020/03/17 Javascript
[03:09]2014DOTA2国际邀请赛 Mushi前队友送上祝福
2014/07/12 DOTA
python黑魔法之参数传递
2016/02/12 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python 字符串只保留汉字的方法
2018/11/16 Python
使用TensorFlow实现二分类的方法示例
2019/02/05 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
Dyson加拿大官方网站:购买戴森吸尘器,风扇,冷热器及配件
2016/10/26 全球购物
俄罗斯在线大型超市:ТутПросто
2021/01/08 全球购物
演讲开场白和结束语
2015/05/29 职场文书
房贷收入证明范本
2015/06/12 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
详解Android中的TimePickerView(时间选择器)的用法
2022/04/30 Java/Android