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 相关文章推荐
jQuery 使用手册(五)
Sep 23 Javascript
初窥JQuery-Jquery简介 入门了解篇
Nov 25 Javascript
JS随机生成不重复数据的实例方法
Jul 17 Javascript
根据选择不同的下拉值出现相对应的文本输入框
Aug 01 Javascript
仿新浪微博登陆邮箱提示效果的js代码
Aug 02 Javascript
javascript中数组array及string的方法总结
Nov 28 Javascript
JavaScript如何获取数组最大值和最小值
Nov 18 Javascript
对jQuary选择器的全面总结
Jun 20 Javascript
node.js中cluster的使用教程
Jun 09 Javascript
前端开发不得不知的10个最佳ES6特性
Aug 30 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
详解微信小程序获取当前时间及日期的方法
Apr 28 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调用mysql存储过程实例分析
2014/12/29 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
Linux平台php命令行程序处理管道数据的方法
2016/11/10 PHP
详解JavaScript中循环控制语句的用法
2015/06/03 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
JavaScript字符串对象
2017/01/14 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
2017/03/30 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
详解Python中where()函数的用法
2018/03/27 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Python银行系统实战源码
2019/10/25 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
房屋改造计划书
2014/01/10 职场文书
军校本科大学生自我评价
2014/01/14 职场文书
大学生个人事迹材料
2014/01/21 职场文书
王金山在党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
临床医学生职业规划书范文
2014/10/25 职场文书
简历自我评价范文
2019/04/24 职场文书
导游词之临安白水涧
2019/11/05 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
如何使用Tkinter进行窗口的管理与设置
2021/06/30 Python
WIN10使用IIS部署ftp服务器详细教程
2022/08/05 Servers