为了解答“正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?”这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容易犯糊涂的地方再系统总结一下。

总结1:附件参数g的用法

表达式加上参数g之后,表明可以进行全局匹配,注意这里“可以”的含义。我们详细叙述:

1)对于表达式对象的exec方法,不加入g,则只返回第一个匹配,无论执行多少次均是如此,如果加入g,则第一次执行也返回第一个匹配,再执行返回第二个匹配,依次类推。例如
var regx=/user\d/;
var str=“user18dsdfuser2dsfsd”;
var rs=regx.exec(str);//此时rs的值为{user1}
var rs2=regx.exec(str);//此时rs的值依然为{user1}
如果regx=/user\d/g;则rs的值为{user1},rs2的值为{user2}
通过这个例子说明:对于exec方法,表达式加入了g,并不是说执行exec方法就可以返回所有的匹配,而是说加入了g之后,我可以通过某种方式得到所有的匹配,这里的“方式”对于exec而言,就是依次执行这个方法即可。

2)对于表达式对象的test方法,加入g于不加上g没有什么区别。

3)对于String对象的match方法,不加入g,也只是返回第一个匹配,一直执行match方法也总是返回第一个匹配,加入g,则一次返回所有的匹配(注意这与表达式对象的exec方法不同,对于exec而言,表达式即使加上了g,也不会一次返回所有的匹配)。例如:
var regx=/user\d/;
var str=“user1sdfsffuser2dfsdf”;
var rs=str.match(regx);//此时rs的值为{user1}
var rs2=str.match(regx);//此时rs的值依然为{user1}
如果regx=/user\d/g,则rs的值为{user1,user2},rs2的值也为{user1,user2}

4)对于String对象的replace方法,表达式不加入g,则只替换第一个匹配,如果加入g,则替换所有匹配。(开头的三道测试题能很好的说明这一点)

5)对于String对象的split方法,加上g与不加g是一样的,即:
var sep=/user\d/;
var array=“user1dfsfuser2dfsf”.split(sep);
则array的值为{dfsf, dfsf}
此时sep=/user\d/g,返回值是一样的。

6)对于String对象的search方法,加不加g也是一样的。

总结2:附加参数m的用法

附加参数m,表明可以进行多行匹配,但是这个只有当使用^和$模式时才会起作用,在其他的模式中,加不加入m都可以进行多行匹配(其实说多行的字符串也是一个普通字符串),我们举例说明这一点

1)使用^的例子
var regx=/^b./g;
var str=“bd76 dfsdf
sdfsdfs dffs
b76dsf sdfsdf”;
var rs=str.match(regx);
此时加入g和不加入g,都只返回第一个匹配{bd},如果regx=/^b./gm,则返回所有的匹配{bd,b7},注意如果regx=/^b./m,则也只返回第一个匹配。所以,加入m表明可以进行多行匹配,加入g表明可以进行全局匹配,综合到一起就是可以进行多行全局匹配

2)使用其他模式的例子,例如
var regx=/user\d/;
var str=“sdfsfsdfsdf
sdfsuser3 dffs
b76dsf user6”;
var rs=str.match(regx);
此时不加参数g,则返回{user3},加入参数g返回{user3,user6},加不加入m对此没有影响。

3)因此对于m我们要清楚它的使用,记住它只对^和$模式起作用,在这两种模式中,m的作用为:如果不加入m,则只能在第一行进行匹配,如果加入m则可以在所有的行进行匹配。我们再看一个^的例子
var regx=/^b./;
var str=“ret76 dfsdf
bjfsdfs dffs
b76dsf sdfsdf”;
var rs=str.match(regx);
此时rs的值为null,如果加入g,rs的值仍然为null,如果加入m,则rs的值为{bj}(也就是说,在第一行没有找到匹配,因为有参数m,所以可以继续去下面的行去找是否有匹配),如果m和g都加上,则返回{bj,b7}(只加m不加g说明,可以去多行进行匹配,但是找到一个匹配后就返回,加入g表明将多行中所有的匹配返回,当然对于match方法是如此,对于exec呢,则需要执行多次才能依次返回)

总结3:在HTML的textarea输入域中,按一个Enter键,对应的控制字符为“\r\n”,即“回车换行”,而不是“\n\r”,即“换行回车”,我们看一个前面我们举过的例子:
var regx=/a\r\nbc/;
var str=“a
bc”;
var rs=regx.exec(str);
结果:匹配成功,rs的值为:{ },如果表达式为/a\n\rbc/,则不会被匹配,因此在一般的编辑器中一个”Enter”键代表着“回车换行”,而非“换行回车”,至少在textarea域中是这样的。

关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的/g是什么意思?”...相关推荐

  1. [转]关于正则表达式 g,m 参数的总结,为了回答“正则表达式(/[^0-9]/g,'')中的/g是什么意思?”...

    为了解答"正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?"这个问题,也为了能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点和容 ...

  2. 正则表达式中的g是什么意思

    为了解答" 正则表达式(/[^0-9]/g,'')中的"/g"是什么意思?"这个问题,也为了 能够便于大家对正则表达式有一个更为综合和深刻的认识,我将一些关键点 ...

  3. php正则替换url,用正则表达式替换url参数

    这次给大家带来用正则表达式替换url参数,用正则表达式替换url参数的注意事项有哪些,下面就是实战案例,一起来看一下. 具体代码如下所示:/* 定义替换对象键值 */ var setReferArgs ...

  4. g++默认参数_C ++默认参数| 查找输出程序| 套装2

    g++默认参数 Program 1: 程序1: #include <iostream> using namespace std; int K = 10; int fun() { retur ...

  5. g++默认参数_C ++默认参数| 查找输出程序| 套装1

    g++默认参数 Program 1: 程序1: #include <iostream> using namespace std; int sum(int X, int Y = 20, in ...

  6. 正则表达式中/i,/g,/ig,/gi,/m的区别和含义

    正则表达式中/i,/g,/ig,/gi,/m的区别和含义 /i (忽略大小写) /g (全文查找出现的所有匹配字符) /m (多行查找) /gi(全文查找.忽略大小写) /ig(全文查找.忽略大小写 ...

  7. gcc/g++ 的参数总结(二)

    gcc 参数总结 如果是 c++,直接将 gcc 改为 g++ 即可. 1. gcc 编译流程 预处理,Pre-Processing:gcc -E test.c -o test.i //.i文件 编译 ...

  8. linux 正则表达式 视频教程,30分钟带你玩转正则表达式

    定义: 正则表达式说白了就是有普通字符.以及特殊字符组成的文子模式.{匹配模式标准} 正则表达式将会作为一个模板与所搜索的字符串进行匹配.可以让使用者轻易达到搜寻/删除/取代某些特定字符的处理程序.此 ...

  9. dreamweaver 正则表达式为属性值加上双引号_Python正则表达式(一)

    Python正则表达式 正则表达式是处理字符串的强大工具,拥有独特的语法和独立的处理引擎. 我们在大文本中匹配字符串时,有些情况用str自带的函数(比如find, in)可能可以完成,有些情况会稍稍复 ...

最新文章

  1. [转贴]现在在做一个WEB的站内消息系统,从工具栏位置弹出一徐徐上升的窗口...
  2. [工具]sublime text2-前端开发利器
  3. 修改 Android 5.1 默认设置
  4. 计算最大回撤_量化扫盲:什么是最大回撤?
  5. 【机器学习基础】9 大主题!机器学习算法理论面试题大汇总
  6. 计算机一级电子表格怎么打开,xls文件怎么打开?其实很简单
  7. JS对文本框输入字符的限制
  8. 作业6--团队项目之需求
  9. hawq state 报错: the database is down, but Ambari shows all hawq services as being
  10. css 样式(checkbox开关、css按钮)
  11. mysql中的cube和rollup_【hive】cube和rollup函数
  12. HBase批量写入数据
  13. AI时代取代手机:语音交互设计漫谈
  14. 程序员应该常去的网站
  15. 酷我音乐 linux,GitHub - weakish/kwplayer: 酷我音乐盒的 Gtk/Linux 实现
  16. CentOS下Tomcat的安装及配置教程
  17. opencv实现车牌识别之字符分割
  18. 【创业感想】从如何让创业公司效率提高3倍说起
  19. ADC12DJ3200 FMC子卡原理图PCB代码 FMC采集卡 JESD204B源码
  20. Webupload+PHP上传大文件

热门文章

  1. 微软宣布 Win10 设备数突破8亿,距离10亿还远吗?
  2. 终于,「最近邻搜索」有通用方法了
  3. 开发自己的山寨Android注解框架
  4. Node webkit启动最大化窗口
  5. fir.im Weekly - iOS 保持界面流畅的技巧
  6. SQL Server 对比数据库差异
  7. 运行hadoop fs -ls 命令显示本地目录问题
  8. Linux系统下统计目录及其子目录文件个数
  9. B-tree索引与Bitmap索引的对比测试
  10. c语言指针要点,C语言指针的重点有哪些?