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 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
javascript 循环读取JSON数据的代码
Jul 17 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
Feb 25 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
javascript中attribute和property的区别详解
Jun 05 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
Dec 28 Javascript
Element-ui tree组件自定义节点使用方法代码详解
Sep 17 Javascript
electron中使用bootstrap的示例代码
Nov 06 Javascript
小程序实现多列选择器
Feb 15 Javascript
tsconfig.json配置详解
May 17 Javascript
Javascript实现鼠标点击冒泡特效
Dec 24 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
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
jQuery each()方法的使用方法
2010/03/18 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
Bootstrap每天必学之导航条(二)
2016/03/01 Javascript
Bootstrap中表单控件状态(验证状态)
2016/08/04 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
vue+koa2实现session、token登陆状态验证的示例
2019/08/30 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
python的即时标记项目练习笔记
2014/09/18 Python
Python中的面向对象编程详解(下)
2015/04/13 Python
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python3多线程操作简单示例
2018/05/22 Python
python采集微信公众号文章
2018/12/20 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Django框架实现的普通登录案例【使用POST方法】
2019/05/15 Python
Python jieba库用法及实例解析
2019/11/04 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
佳能德国网上商店:Canon德国
2017/03/18 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
C#面试题问题集
2016/04/02 面试题
自荐书格式
2013/12/01 职场文书
公司员工活动策划方案
2014/08/20 职场文书
小学生学习保证书
2015/02/26 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
python 实现mysql自动增删分区的方法
2021/04/01 Python
Python字符串格式化方式
2022/04/07 Python
Redis基本数据类型List常用操作命令
2022/06/01 Redis