为了解答“正则表达式(/[^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是什么意思?”...
相关文章:

那位13岁就当上老板的开发者是如何炼成的?
当我们听到有关年轻有为的企业家的故事时,大多会想到 25 到 30 岁左右的年轻人。毕竟,Google、亚马逊、Facebook、Twitter、LinkedIn、Pinterest、Instagram、Snapchat 以及其它很多公司的创始人都是在他们 20 多岁时创办的这些企业。随着人们与科技的联…

phonegap android,Phonegap 3不适用于Android Studio
对我来说,这似乎很简单,但我根本做不到.我已经成功安装了npm install -g phonegap并安装了phonegap.C:\var\www\sexdiaries.co.uk>phonegap create sexdiaries -n SexDiaries -i co.uk.sexdiaries.app然后,我被告知Here尝试运行andriod但出现以下错误C:\var\www\sexdiaries.…

安装VCenter提示数据库排序规则有问题
安装VCenter提示数据库排序规则有问题 有时候在安装sql server 数据库时你如果修改了排序规则,那么在安装VCenter时它会提示你的数据库排序规则有问题,不让你安装。这个时候你去修改一下数据库规则就可以继续安装了。 解决方法: 1.把安装光盘…

点滴印象中的周其凤校长
原文:[url]http://blog.sina.com.cn/s/blog_4908ded80100bbui.html?tj1[/url]2003年9月,我进入吉林大学读书,第二年周其凤成为吉林大学新任校长。此后的三年,我见过校长两次,这两次,校长的风格给我留下了深…

开源50万行代码,百亿广告分成,百度智能小程序能成吗?
作者 | 非主流出品 | AI科技大本营终于,BAT 在小程序的赛道上展开了激战,而这一场战争得到了百度前所未有的重视。9 月 4 日,百度总裁张亚勤称拉动百度业务的“新四小龙”——智能小程序、信息流、短视频/小视频以及百度云。紧接着࿰…

接近WinHEC 2008
第一次听说windows硬件工程大会还以为微软要讲她出的硬件的一个技术交流大会,后来才了解到是微软公司面向个人电脑终端、服务器、硬件设备以及驱动程序的最具前瞻性的全球硬件技术信息盛会。而不是讲硬件本身,是与硬件相关的软件产品。今年是第17届WinHE…

加深C# 中字符串前加@符号理解以及使用~~
先看代码(以下代码使用在C#,环境ASP.NET): protectedvoidPage_Load(objectsender, EventArgs e) { test1("\a"); test1("\a"); test2("\a"); test2("\a"); test…

鸿蒙系统首批更新机器,鸿蒙系统升级名单
【鸿蒙系统升级名单】华为的鸿蒙系统算是早早放出消息的重量级产品,国产OS的名号也吸引了不少小伙伴的注意。很多朋友都想体验传闻已久的鸿蒙操作系统,但也担心自己的手机无法支持。那么,鸿蒙操作系统的升级名单到底有哪些呢机器呢?下面就让…

公开课报名 | 基于自定义模板的OCR结果的结构化处理技术
随着行业的发展和技术的成熟,文字识别(OCR)目前已经应用到了多个行业中,比如物流行业快递包裹的分拣,金融行业的支票单据识别输入,交通领域中的车牌识别,以及日常生活中的卡证、票据识别等等。O…

产生所有排列---旋转法------2013年1月22日
我觉得这是一个很巧秒的算法。思路非常直接,从代码里可以很容易看出来,再单步调试查看set数组的值就可以很清楚地明白算法的过程。代码如下:1 #include <stdio.h>2 #define MAX 10003 4 int n3; //the number of set element5 int set[MAX]{1,2,3…

VS Code 正在统治代码编辑器领地!
出品:CSDN(ID:CSDNnews)【CSDN编者按】代码编辑器之于程序员的重要性不言而喻。长久以来,Vim、Emacs等老牌编辑器一直占据着举足轻重的地位,但是近年来情况似乎发生了变化。根据软件工程师招聘网站Tripleby…

Linux主辅DNS数据不同步故障排除
Linux主辅dns数据不同步故障排除欢迎使用微信关注“云运维联盟”公众号,第一时间了解本博客动态!在互联网中,我们知道任何一台提供应用服务的主机(例如:HTTP、FTP等)都有它一个便于记忆Domain Name…

c语言贝叶斯分类,基于朴素贝叶斯分类器的文本分类算法(C语言)
基于朴素贝叶斯分类器的文本分类算法(C语言)基于朴素贝叶斯分类器的文本分类算法(C语言).txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了。他只是比对方更珍惜这份感情。#include #include #include //_getcwd(), _chdir()#include…

开源项目哪家强?Github年终各大排行榜超级盘点(内附开源项目学习资源)
整理 | Jane出品 | AI科技大本营【导语】提到开源项目,2018 年注定是不平凡的一年。据 Octoverse 报告数据,仅在 2018 年,Github 上的新用户就比过去六年的用户总数还要多 ,存储库数量近一亿,这些增长都要归功于开源社…

给现有MVC项目增加Web API支持
在MVC4中自带了Web API不再需要从Nuget中下载。 Step1:增加System.Web.Http,System.Web.Http.WebHost,System.Net.Http三个程序集的引用,都是4.0版本; Step2:增加路由,默认的路由代码如下 route…

word自动消除html标签,清理Word生成HTML的冗余;清理与清除HTML标签
众所周知,当直接将word中的内容复制到网页上时,会产生很多冗余代码;而现在,在线编辑器又很普遍;就包括,现在用的百度空间的这个文本编辑器,如果直接从WORD中写好的文章复制进来,本来…

开头轰轰烈烈,结局冷冷清清
开头轰轰烈烈,结局冷冷清清转载于:https://blog.51cto.com/xiaomage/115649

C# SQLiteHelper类似SqlHelper类实现存取Sqlite数据库
这个类不是我实现的,原文在这里,我修改了原文中分析sql语句参数的方法,将方法名修改为AttachParameters,将其修饰符修改为private,并直接传递command到这个方法,直接绑定参数到comand。修改后的代码如下 SQ…

Skype for Business Server 2015-03-后端服务器-0-准备
1. 规划-拓朴图 2. 规划-服务器 3. 准备-软件 Sql Server 2014: cn_sql_server_2014_enterprise_edition_x64_dvd_3932882.iso Sql Server 2014 CU6: Cumulative update package 6 for SQL Server 2014 https://support.microsoft.com/en-us/kb/3031047 4. 准备-虚拟…

html文档使用,使用提供 HTML 文档的过程
使用提供 HTML 文档的过程通常,编写一个可处理发送给特定服务的请求的过程是最简单的方式。这样的过程将返回一个 Web 页。或者,该过程也可接受作为 URL 的一部分进行传递的参数以对其输出进行自定义。但以下示例要简单很多。它例示了服务可以简单到什么…

这样学算法,包会包懂so easy~
整理 | Jane出品 | AI科技大本营面试前,大家都会开始刷各类网站,希望能在算法之道上有所进益,也期待有幸能在面试中碰上原题,而在那么多的网站中,LeetCode 一定是候选学习的网站之一。但是 LeetCode 网站上的题量和难度…

上映 10 天,票房就突破 10 亿的《海王》真的有那么好看?
出品:CSDN(ID:CSDNnews)写在前面本文将主要通过Python加上一些数据分析,来证明《海王》好看。《海王》一部电影带你重温《驯龙高手》《变形金刚》《星球大战》《星河战队》《铁血战士》《安德的游戏》《异形》可能还借…

利用SMS OSD实现win2008操作系统的部署
我们知道SMS是一个强大的桌面操作系统,利用SMS可以实现对客户端的软件、硬件等数据的统计,还可以管理公司的资产等等。那么利用SMS OSD是否能部署出XP、win2003、win2008等操作系统呢?今天我们就来试试用SMS OSD来部署win2008操作系统&#x…

企业域名更换操作系列1:为什么要进行域名更换及更换需要注意事项
前段时间在公司讨论对现在域结构调整时,有提到希望能重新启一套域,将现在域内信息全部进行迁移,迁移完成后再把域名改为原域名,此问题从愿景上来看是不错的,因为这种方法虽然操作比较复杂,但是对于用户体验上来看,还是有一定的帮助…

html在页面上div绝对定位,html – 中心浮动div在绝对定位div内
我有这套html和CSS.我想要的是必须让小的小工具块向左浮动但是在绝对定位的小工具包装器内部居中.因此,小工具包装器绝对位于页面底部.它包含x个小工具,它们在包装器内部浮动.所有这些小工具应该在包装器中居中 – 这是可能的,如何……?这真是让我伤心….1not setno…

主角用计算机控制身体,国漫段子手:绝技,用计算机控制挖掘机炒菜
身为古神的叶辰从神境世界陨落到了苍蓝世界,这里百州千国林立,豪强争霸,叶辰在这个苍蓝世界呆了数百年,建立了庞大的势力。在百州千国,叶辰的存在一直都是一个传说。但是来自神境世界的力量慢慢地延伸到了苍蓝世界&…

2018热点总结:BERT最热,GANs最活跃,每20分钟就有一篇论文...
作者 | Ross Taylor 译者 | linstancy 整理 | Jane 出品 | AI科技大本营 【导读】本文的作者 Ross Taylor 和 Robert Stojnic 在今年一起启动了一个名为“Paper with Code”的项目,将 AI 领域的一些研究论文和论文开源代码结合展示,方便大家学习与研究…

android之android.intent.category.DEFAULT的用途和使用
1、要弄清楚这个问题,首先需要弄明白什么是implicit(隐藏) intent什么是explicit(明确) intent。 Explicit Intent明确的指定了要启动的Acitivity ,比如以下Java代码: [java] view plaincopy print? Intent intent new Intent(this, B.class…

MS sql server和mysql中update多条数据的例子
1.MS sql server中使用动态的表名:declare tableName nvarchar(160)set tableName t_stat_alldeclare sql nvarchar(160)print tableNameset sqlselect count(*) from tableNameexec(sql)2.mysql的例子1语句update (select sc,tos,sum(click) as click,product,adp…

OpenGL编程轻松入门(四)
1. 曲面和曲线前面我们讲了如何绘制平面的图形,这一节我们学习如何绘制曲线和曲面。例10:绘制一个曲面,本程序使用二维求值器绘制一个曲面。本例中也有一些特殊效果的操作。#include <windows.h>#include <GL/GLAUX.h>#i…