当前位置:首页 > 编程教程 > javascript技术文章 > JS中使用正则表达式g模式和非g模式的区别

JS用正则表达式g模式和非g模式的区别点整理

  • 发布时间:
  • 作者:码农之家
  • 点击:51

这篇文章主要知识点是关于JS、正则表达式、g模式、非g模式、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

JavaScript启示录
JavaScript启示录原书完整版
  • 类型:JS大小:24.4 MB格式:PDF作者:Cody
立即下载

JS中使用正则表达式g模式和非g模式的区别

先给大家说下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模式的区别,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对码农之家网站的支持!

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

javascript 相关电子书
学习笔记
网友NO.503345

Eclipse Debug模式的开启与关闭问题简析

默认情况下,eclipse中右键debug,当运行到设置的断点时会自动跳到debug模式下。但由于我的eclipse环境,从开始一直用到现在,中间包括装、卸各种插件,更换版本,从英文界面导到中文界面又换回来,可以说现在的环境已经臃肿混乱到自己都搞不清楚的地步了。不知哪一天设置了,把debug模式关掉了,之后一直到现在,运行debug时,还是在Java视图(perspective)下,无法自动跳转到debug perspective。知道是在preferences里面设置,却不知是哪一个选项,也就一直忍耐着,每次debug都手动切换到debug视图。 今日再次想切换过来,在preferences面板利用搜索功能,搜perspective,哈,就在Run/debug下有这么一个选项,把Open the associated perspective when launching选择为"Always"即可。(原来选的Never)。 其他设置: 可以通过选中Run/Debug面板的"Skip breakpoints during a 'Run to Line' operation",从而……

网友NO.692761

Java多线程模式之Balking模式详解

本文实例讲述了Java多线程模式之Balking模式。分享给大家供大家参考,具体如下: 当现在不适合这个操作,或是没有必要进行这个操作时就直接放弃这个操作而回去。这个就是Balking模式 例如王某在餐厅吃饭,当王某需要点餐时喊服务员需要点餐。当服务员A和B都注意到了王某点餐的示意,这时服务员B看到服务员A已经去响应了王某的点餐请求,所以服务员B就不会再过去响应王某的点餐请求。 程序示例: 程序的需求是模拟一个自动保存的功能。自动保存是为了预防计算机忽然断电或则软件突然出错的危险,定期将数据保存在文件里的功能。 1、Data类:表示是否修改,及修改函数的类 2、SaveThread类:定期保存 3、ChangeThread:修改数据,保存文件 4、Main:模拟数据 package org.zhy.demo04;import java.io.FileWriter;import java.io.IOException;import java.io.Writer;/** * 表示是否修改……

网友NO.204670

IDEA Debug模式下改变各类型变量值的方法

本文介绍了IDEA Debug模式下改变各类型变量值的方法,分享给大家,具体如下: 测试类 import org.slf4j.LoggerFactory;import java.util.HashMap;import java.util.Map;/** * Created by PengHongfu 2018-04-18 18:21 */public class testClass { private static final org.slf4j.Logger logger = LoggerFactory .getLogger(testClass.class); public static void main(String args[]){ int a = 11; MapString,Object map = new HashMap(); map.put("name","Pi"); map.put("age",20); logger.info("a={},map={}",a,map); }} debug 模式下,设置 断点 后,上图的变量 a 原始值为 11 ,在 Watchs 中点击绿色的加“ + ”号,输入表达式 a=22 ,向下执行,可以发现 a 的值变为了 22 。 对于特殊的类型例如, Map 、 List 等,同样可以通过 map.put("name","Hali") 类似的方式赋值。 com.ycjf.ycs.service.khgl.wxzlgl.testClass - a=22,map={name=Hali, age=20} 注意: Watchs 中的表达式作用的优先级高于代码中的优先级 例子中 W……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com