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 setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
Jun 11 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
JS+CSS实现的拖动分页效果实例
May 11 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
浅谈Angular路由守卫
Aug 26 Javascript
Bootstrap table表格初始化表格数据的方法
Jul 25 Javascript
vue.js图片转Base64上传图片并预览的实现方法
Aug 02 Javascript
Vue通过ref父子组件拿值方法
Sep 12 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
JS轮播图的实现方法
Aug 24 Javascript
Vue实现开关按钮拖拽效果
Sep 22 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 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
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
php绘图中显示不出图片的原因及解决
2014/03/05 PHP
PHP打印输出函数汇总
2016/08/28 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
用JavaScript实现UrlEncode和UrlDecode的脚本代码
2008/07/23 Javascript
关于javascript event flow 的一个bug详解
2013/09/17 Javascript
jquery中的过滤操作详细解析
2013/12/02 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
利用Angular.js限制textarea输入的字数
2016/10/20 Javascript
Javascript下拉刷新的简单实现
2017/02/14 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
[49:15]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第二场 1月19日
2021/03/11 DOTA
常用python编程模板汇总
2016/02/12 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
python序列化与数据持久化实例详解
2019/12/20 Python
TensorFlow2.0矩阵与向量的加减乘实例
2020/02/07 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
法学函授自我鉴定
2014/02/06 职场文书
党员公开承诺事项
2014/03/25 职场文书
校庆筹备方案
2014/03/30 职场文书
合作协议书怎么写
2014/04/18 职场文书
考试作弊检讨
2015/01/27 职场文书
会议通知
2015/04/15 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python