`

JS正则实例讲解

阅读更多
js里 str.replace(/^\s*(.*?)[\s\n]*$/g, '$1')
详解 如下:
最后的/g表示区分大小写的意思。。第一个^表示从你要查找的字符串的第一位开始匹配比如123 正则为1 那么这里123的1 就匹配这个正则。。如果是213 这里213里面的1 就不匹配这个正则 \s 包括空格、制表符、换页符等空白字符的其中任意一个后面跟个*表示 可以匹配0-N次,(.*?)这个小括号里面的“.”小数点可以匹配除了换行符(\n)以外的任意一个字符而后面跟*也是说的 可以匹配0-N次后面的[\s\n]*表示这里匹配一个字符而这个字符只能是\s或者\n里面的 \n表示回车和换行符,*就不多说了 最后$表示正则匹配的结束,这个与^合起来用。,也就是说 这个匹配的字符串 必须以\s\n里面包含的字符结束

javascript正则后面有加/i或者/g是什么意思!
i,不区分大小写
g,全局搜索

为了解答“正则表达式 (/[^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

g 只影响于 exec、match 方法。

    * 若不指定 g,则:每次调用 exec 都只返回第一个匹配;match 也是只返回第一个匹配。
    * 若指定 g,则:每次调用 exec 都从上一个匹配之后查找新的匹配;match 则是返回所有的匹配。

关于 exec、match 方法可参见正则表达式中 test、exec、match 方法区别。

还有一种情况,就是使用 string 对象的 replace 方法时,指定 g 表示替换所有。
var str = "1a1b1c";
alert(str.replace(/1/, "")); // a1b1c
alert(str.replace(/1/g, "")); // abc

参数 m

m 影响对行首、行尾的解释,也就是影响 ^、$。

    * 若不指定 m,则:^ 只在字符串的最开头,$ 只在字符串的最结尾。
    * 若指定 m,则:^ 在字符串每一行的开头,$ 在字符串第一行的结尾。

var str = "123\r\n456";
var reg1 = new RegExp("^123$\r\n^456$", "m"); // true
var reg2 = new RegExp("^123$\r\n^456$", ""); // false
var reg3 = new RegExp("123\r\n456", "m"); // true
var reg4 = new RegExp("123\r\n456", ""); // true
alert(reg1.test(str) + "\r\n" + reg2.test(str) + "\r\n" + reg3.test(str) + "\r\n" + reg4.test(str));

参数 i

参数 i 是指忽略大小写,注意仅是忽略大小写,并不忽略全半角。
0
0
分享到:
评论

相关推荐

    js正则表达式测试含实例.rar

    本资料"js正则表达式测试含实例.rar"包含了对正则表达式在JavaScript中的运用及其实践案例的详细讲解,旨在帮助开发者深入理解和熟练掌握这一关键技能。 1. **正则表达式基础** - **定义与创建**:正则表达式是由...

    JavaScript正则表达式使用详解.zip

    文件"JavaScript正则表达式使用详解.txt"很可能包含了关于这些概念的详细解释和实例,而"NCIE书上的例子.txt"可能是某个教程书籍中的练习案例,这些资源可以帮助深入理解并掌握JavaScript正则表达式。 文件"P179_1....

    正则表达式PPT、示例讲解

    - 各种编程语言如JavaScript、Python、Java等都有内置的正则表达式支持,提供方法进行匹配、替换、分割等操作。 - 使用模式匹配功能,可以进行数据验证,例如邮箱、电话号码格式的校验。 - 在文本编辑器或搜索...

    正则表达式经典实例

    《正则表达式经典实例》本书讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、...

    js正则的概要介绍与分析

    《精通JavaScript正则表达式》是一份详尽的在线指南,旨在帮助开发者掌握JavaScript中正则表达式的使用方法。无论你是初学者还是有一定经验的开发者,这份资源都将为你提供全面的知识点讲解和实用的示例代码。 ### ...

    JavaScript正则表达式迷你书(1.1版)_程序逻辑_

    **JavaScript正则表达式迷你书(1.1版)** 正则表达式是JavaScript中一个强大的工具,用于处理文本字符串,进行模式匹配...本书"JavaScript正则表达式迷你书(1.1版)"将对此进行全面讲解,帮助读者掌握这一关键技能。

    正则表达式经典实例.(美)高瓦特斯,(美)利维森.pdf

    本书讲解了基于8种常用的编程语言使用正则表达式的经典实例。书中提供了上百种可以在实战中使用的实例,以帮助读者使用正则表达式来处理数据和文本。对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误...

    javascript正则匹配页面关键字

    在JavaScript编程中,正则表达式(Regular ...通过以上讲解,你应该掌握了如何在JavaScript中使用正则表达式匹配页面关键字的基本方法。实践中,你可以结合实际需求调整正则表达式和匹配策略,提高匹配的准确性和效率。

    js正则输入验证提示

    本文将详细讲解如何使用JavaScript进行正则表达式输入验证,并结合C#.NET实例代码来加深理解。 1. **JavaScript正则表达式基础** - 定义:在JavaScript中,你可以使用`/pattern/flags`的形式创建一个正则表达式,...

    正则表达式经典实例.(美)高瓦特斯,(美)利维森

    《正则表达式经典实例》这本书中,作者通过丰富的实例讲解了这些概念,并提供了实践指导,无论你是初学者还是有经验的开发者,都能从中受益。阅读这本书,你将能够更好地掌握正则表达式这一强大的工具,解决实际工作...

    JavaScript正则替换HTML标签功能示例

    提到了两款常用的在线正则表达式工具,分别为JavaScript正则表达式在线测试工具和正则表达式在线生成工具,它们可以帮助开发者测试和创建正则表达式。 这个示例对于理解JavaScript如何处理HTML字符串,以及如何...

    JavaScript经典正则表达式实战

    JavaScript正则表达式是编程语言JavaScript中的一个重要组成部分,它用于处理文本字符串,进行模式匹配、查找、替换等操作。在JavaScript中,正则表达式是一种强大的工具,可以帮助开发者实现复杂的数据验证、文本...

    javascript 30分钟学会正则表达式

    在学习过程中,"正则表达式30分钟入门教程.htm"这份文档会详细讲解这些概念,并通过实例演示如何在JavaScript中运用。同时,"正则表达式30分钟入门教程_files"可能包含相关的示例代码或练习题,以加深理解。 总之,...

    JavaScript正则表达式验证中文实例讲解

    JavaScript经常会验证中文,这里提供两个例子: Javascript代码: 代码如下: /** *A simple example */ function ischinese(temp){ var re = /[^u4e00-u9fa5]/; if(re.test(temp)) return false; return true; } <p>/...

    JS 正则表达式验证密码、邮箱格式的实例代码

    本文主要讲解了如何使用JS正则表达式来验证密码和邮箱格式,并提供了相应的实例代码。以下详细介绍知识点。 密码验证: 1. 密码的复杂度要求:要求密码至少有6位字符,并且包含至少一个大写字母、一个小写字母、一...

    javascript CHM帮助文档,包含一个正则表达式PPT

    总的来说,这个压缩包提供的资源可以帮助开发者深入理解JavaScript语言,特别是正则表达式的使用,同时还能提供实际的用户验证代码实例,供学习和参考。无论是初学者还是经验丰富的开发者,都能从中受益。通过阅读...

    js_正则表达式实战JavaScript语言精髓与编程实践

    书中实例丰富,讲解透彻,适合有一定JavaScript基础并希望提升正则表达式技能的开发者阅读。两份PDF文档——"JavaScript语言精髓与编程实践.pdf"和"js_正则表达式实战.pdf",将分别从JavaScript语言的整体理解和正则...

Global site tag (gtag.js) - Google Analytics