`
yuwei2008vip
  • 浏览: 37686 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

参数g,m的用法

 
阅读更多

总结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域中是这样的。

分享到:
评论

相关推荐

    hostapd强制40M频宽修改方法

    hostapd强制40M频宽修改方法

    matlab精度检验代码-G2EGM:“用于具有非凸性和约束性的多维模型的通用内生网格方法”的代码

    matlab精度检验代码G2EGM 代码,以及,2017年, 《经济动力与控制学报》 ,74。 Python版本:请参阅。 自述文件 由于MATLAB MEX设置的变化,该版本的代码与本文中使用的代码有所不同。 该代码使用MATLAB 2018b针对64...

    libsvm更新版本farutoversion-libsvm-mat-2.89-3-farutoVer1.rar

    在libsvm-mat-2.89-3的基础上 加进了SVMcgForClass.m和SVMcgForRegress.m可以用grid search 的方法来寻找最佳的参数c和g,具体的介绍和使用方法看这个帖子: https://www.ilovematlab.cn/thread-47819-1-1.html 帖子...

    JVM参数设置详细说明

    这个参数很影响性能,如果你的程序需要比较多的临时内存,建议设置到512M,如果用的少,尽量降低这个数值,一般来说128/256足以使用了。 d: -XX:PermSize= 指定jvm中Perm Generation的最小值,如:-XX:PermSize=32m...

    详解Windows下调整Tomcat启动参数的实现方法

    Windows下调整Tomcat启动... 比如,我想设置初始内存大小为128M,最多占用1G,就是下面的设置: -Xms128m -Xmx1024m  在Linux/Unix下,可以通过在 {tomcat_dir}/bin/catalina.sh 中增加或修改 JAVA_OPTS 来达到:

    内核模块make -C $(LINUX_PATH) M=$(CURRENT_PATH) modules

    其它的内容凡是所有选项中m提示的,都选择m,这样可以通过手工的方式添加该模块。 ** Loadable module support*Enable loadable module support (CONFIG_MODULES) [Y/n/?]Set version information on all symbols ...

    三极管,场效应管参数大全

    A-检波开关混频二极管、B-变容二极管、C-低频小功率三极管、D-低频大功率三极管、E-隧道二极管、 F-高频小功率三极管、G-复合器件及其他器件、H-磁敏二极管、K-开放磁路中的霍尔元件、L-高频大功率三极管、M-封闭...

    数控机床手工编程与机床操作

    常用G功能(G00、G01、G02、G03)、M功能、S、 F、T功能的作用、刀具号的指令格式。能车削轴的轮廓线。 训练:加工下面零件。 1.用基本指令编制下图所示零件的加工程序,毛坯为¢60×80,材料为45#钢。 ...

    Oracle9i的init.ora参数中文说明

    默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_multiple_listeners: 说明: 指定多个监听程序的地址是分别指定的, 还是用一个 ADDRESS_LIST 字符串指定。如果该值为 TRUE, ...

    纯SU(3)规范理论中基于扭曲梯度流耦合的Λ参数的非摄动确定

    我们使用扭曲梯度流(TGF)方法评估纯SU(3)规范理论的M S $$ \ overline {\ mathrm {MS}} $$方案中的Λ参数。 在具有扭曲边界条件的尺寸为L 4的有限体积框中定义了运行耦合常数g TGF 2(1 / L)。 这定义了TGF方案...

    入门学习Linux常用必会60个命令实例详解doc/txt

    umount 命令是mount命令的逆操作,它的参数和使用方法和mount命令是一样的。Linux挂装CD-ROM后,会锁定CD—ROM,这样就不能用CD- ROM面板上的Eject按钮弹出它。但是,当不再需要光盘时,如果已将/cdrom作为符号链接...

    Linux 内存测试工具 memtester

     使用方法:  Usage: memtester [-p physaddrbase] [B|K|M|G] [loops]  如:  memtester 28G 3 #测试28G的内存3次。  因为系统运行和本工具运行都需要内存,所以不能把所有的内存都测试到。可以先用free ...

    温度控制表,温度控制仪厦门,安东电子LU-902M双显位式调节仪说明书,选型,接线图

    G型:48×48×100 开口:44×44 产品服务:一年包换五年保修">LU 902M双显位式调节仪 一 概述 LU 902M位式调节仪在LU 602位式调节仪的基础上 通过采用模块化结构 EMI抑制等多种技术进一步提高仪表的抗干扰能力及整体...

    matlab离散点连成的两曲线的交点-intersections.m

     曾经思考过曲面求交,结果发现是学术界的一个难题,并且也想出了一个当前广泛使用方法原理一样的近似解法(追踪法)。当然网上也有很多方法,只不过那些方法非常粗糙,无非就是meshgrid出离散网格,比较两曲面在某...

    论文研究 - 镁合金AZ61在不同应力比下的疲劳寿命及其变化的研究

    用修正的线性弹性断裂力学参数M(由McEvily等人提出)来分析在不同应力比R下的短FCG行为。发现FCG速率与M参数之间的关系是有用且适当的用于预测不同R比率下的疲劳寿命。 此外,该方法可以利用FCG定律和最危险的金属...

    TP-LINK WR703N OpenWrt刷机教程及固件 4M ,稳定 支持3G和打印机共享外接卡簧

    11.关于MWAN2负载均衡,效率还不错,还支持基于session的负载均衡,使用方法见/etc/config/mwan2里面的注释。 mwan2的作者新出了mwan3,有兴趣可以去看看:https://forum.openwrt.org/viewtopic.php?id=39052 12....

    2009 达内Unix学习笔记

    用法 mkdir [-m 模式] [-p] dirname ... mkdir dir1/dir2 在dir1下建dir2 mkdir dir13 dir4 dir5 连建多个 mkdir ~/games 用户主目录下建(默认在当前目录下创建) mkdir -p dir6/dir7/dir8 强制创建dir8;若没有...

    unutm:一个JavaScript库,用于从URL中删除Urchin Traffic Monitor(UTM)参数

    UnUTM JavaScript库从网址中删除了Urchin Traffic Monitor(UTM)参数。 安装 用Bower安装 $ bower install unutm 用法 ... [removed][removed] ... (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r

    联想商用机型一键恢复4.6.2

    以下安装用例以商用机型为例,且仅为说明工具的使用方法,具体的文件名称和分区容量可能会与生产时的具体要求不同。 一键恢复4.6,安装方式如下: 1、使用命令行方式安装 对于带有文件备份应用,如开天: hpatool ...

    CycleMLP:“CycleMLP”的实现

    参数 触发器 前 1 名 下载 循环MLP-B1 15M 2.1G 78.9% 循环MLP-B2 27M 3.9G 81.6% 循环MLP-B3 38M 6.9G 82.4% CycleMLP-B4 52M 10.1G 83.0% 循环MLP-B5 76M 12.3G 83.2% 用法 安装 PyTorch 1.7.0+ 和...

Global site tag (gtag.js) - Google Analytics