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 浮点数运算 精度问题
Oct 06 Javascript
js动画效果制件让图片组成动画代码分享
Jan 14 Javascript
动态加载jQuery的方法
Jun 16 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
May 25 Javascript
详解Angular中$cacheFactory缓存的使用
Aug 19 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
Nov 25 Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 Javascript
利用Vue实现移动端图片轮播组件的方法实例
Aug 23 Javascript
原生javascript实现文件异步上传的实例讲解
Oct 26 Javascript
javascript代码优化的8点总结
Jan 29 Javascript
vue 循环加载数据并获取第一条记录的方法
Sep 26 Javascript
小程序实现左滑删除的效果的实例代码
Oct 19 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的memcached客户端memcached
2011/06/14 PHP
PHP实现关键字搜索后描红功能示例
2019/07/03 PHP
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
使用node.js半年来总结的 10 条经验
2014/08/18 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
JavaScript事件委托技术实例分析
2015/02/06 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
Javascript实现的SHA-256加密算法完整实例
2016/02/02 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
React创建组件的三种方式及其区别
2017/01/12 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
小程序封装wx.request请求并创建接口管理文件的实现
2019/04/29 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python登录并爬取淘宝信息代码示例
2017/12/09 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
python实现替换word中的关键文字(使用通配符)
2020/02/13 Python
python输出数学符号实例
2020/05/11 Python
Python2.x与3​​.x版本有哪些区别
2020/07/09 Python
美国伴娘礼服商店:Evening Collective
2019/10/07 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
暑期研修感言
2014/02/17 职场文书
导游个人求职信范文
2014/03/23 职场文书
公司员工离职证明书
2014/10/04 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
教师岗位职责
2015/02/03 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
十七岁的单车观后感
2015/06/12 职场文书
少儿励志名言(80句)
2019/08/14 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python