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 相关文章推荐
用javascript实现计算两个日期的间隔天数
Aug 14 Javascript
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
基于jQuery的仿flash的广告轮播
Nov 05 Javascript
读jQuery之十一 添加事件核心方法
Jul 31 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
Sep 29 Javascript
利用JS提交表单的几种方法和验证(必看篇)
Sep 17 Javascript
js实现页面刷新滚动条位置不变
Nov 27 Javascript
JS动态添加的div点击跳转到另一页面实现代码
Sep 30 Javascript
理解 JavaScript EventEmitter
Mar 29 Javascript
原生JS实现前端本地文件上传
Sep 08 Javascript
Vue常用的几个指令附完整案例
Nov 06 Javascript
微信小程序实现时间预约功能
Nov 27 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中date()日期函数有关参数整理
2011/07/19 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
php5.4传引用时报错问题分析
2016/01/22 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
document.documentElement &amp;&amp; document.documentElement.scrollTop
2007/12/01 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
Javascript中valueOf与toString区别浅析
2013/03/19 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
javascript对象的使用和属性操作示例详解
2014/03/02 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
Javascript基础教程之函数对象和属性
2015/01/18 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
js仿腾讯QQ的web登陆界面
2016/08/19 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
AngularJS实现根据不同条件显示不同控件
2017/04/20 Javascript
vue实现拖拽效果
2019/12/23 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
对python当中不在本路径的py文件的引用详解
2018/12/15 Python
python set集合使用方法解析
2019/11/05 Python
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
私有程序集与共享程序集有什么区别
2013/04/05 面试题
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
2014年工商所工作总结
2014/12/09 职场文书
关于环保的宣传稿
2015/07/23 职场文书
小学教师教学随笔
2015/08/14 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers