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向.ashx文件post中文乱码问题的解决方法
Mar 28 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
Aug 08 Javascript
理解Javascript的动态语言特性
Jun 17 Javascript
纯css实现窗户玻璃雨滴逼真效果
Aug 23 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
判断输入的字符串是否是日期格式的简单方法
Jul 11 Javascript
运用js教你轻松制作html音乐播放器
Apr 17 Javascript
深入理解vue路由的使用
Mar 24 Javascript
浅谈Angular单元测试总结
Mar 22 Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
Jul 22 Javascript
探索浏览器页面关闭window.close()的使用详解
Aug 21 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第一次无法获取cookie问题处理
2014/12/15 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
jQuery live
2009/05/15 Javascript
Javascript表达式中连续的 &amp;&amp; 和 || 之赋值区别
2010/10/17 Javascript
PHP 与 js的通信(via ajax,json)
2010/11/16 Javascript
对xmlHttp对象的理解
2011/01/17 Javascript
yepnope.js 异步加载资源文件
2011/09/08 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
node打造微信个人号机器人的方法示例
2018/04/26 Javascript
JSON数据中存在单个转义字符“\”的处理方法
2018/07/11 Javascript
JavaScript 处理树数据结构的方法示例
2019/06/16 Javascript
JQuery绑定事件四种实现方法解析
2020/12/02 jQuery
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
php使用递归与迭代实现快速排序示例
2014/01/23 Python
python连接mysql调用存储过程示例
2014/03/05 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
python实现低通滤波器代码
2020/02/26 Python
程序员机试试题汇总
2012/03/07 面试题
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
工作的心得体会
2013/12/31 职场文书
投资合作协议书
2014/04/17 职场文书
群众路线个人整改措施
2014/10/24 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
工作犯错保证书
2015/05/11 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript