注意:访问本站需要Cookie和JavaScript支持!请设置您的浏览器! • 打开购物车 • 查看留言 • 付款方式 • 联系我们 |
首页 | 电子入门 | 学单片机 | 免费资源 | 下载中心 | 商品列表 | 象棋在线 | 在线绘图 | 加盟五一 | 加入收藏 | 设为首页 |
选择分类:当前分类——电脑编程 相关联或者相类似的文章: 国产OS?中文CPU?(1213) JAVA教程 第一讲 Java语言概述(2)(796) JAVA教程 第三讲 Java语言中的面向对象特性(1)(785) vb的10个小技巧 (772) 学编程的人不能不看的好文章 (745) JAVASCRIPT简介 (736) 绝对不知道你的浏览器还有这个功能!!(722) JAVA对象入门第1章 对象入门(719) 给初学编程者的忠告 (702) JavaScript 对象与数组参考大全(650) JAVA教程 第三讲 Java语言中的面向对象特性(2)(631) JAVA教程 第三讲 Java语言中的面向对象特性(3)(587) VB开发Windows环境下的串行通信程序(560) SQL转ACCESS解决自动编号问题(531) JAVA教程 Java语言基础知识(452) JAVA教程 第二讲 Java语言基础知识(1)(364) DHTML参考手册(一)(210) [精]5分钟编写一个ASP论坛(99) Cookies常用命令简介(99) RegExp正则表达示用法(3) 首页 前页 后页 尾页 本站推荐: | RegExp正则表达示用法 今天写程序的时候出现了一个问题,总是出现不允许操作的对象的错误,很奇怪之前一直运行没有问题的程序,怎么会有不允许操作的对象呢?只能一步一步的查到底是那个对象不允许操作了,终于找到了这个对象,Set regEx = New RegExp,把所有的文件搜索了一遍,也没有发现 RegExp,怪不得会出现不允许操作的对象了。
上网搜索RegExp,原来这是一个VBScript5.0的正则表达式对象。只要你的服务器安装了IE5.x,就会VBScript5.0。VB中的replace和execute函数可以执行,那么这个为什么不能执行呢?猜想可能是改对象需要注册组件,开始-运行:regsvr32 vbscript.dll 就OK了。 问题解决了,那么RegExp该如何使用呢?在网上找到了相关的说明。 我们在制作网站的时候,尤其是各种电子商务网站,首先都会让用户填写一些表格来获取注册用户的各种信息,因 为用户有可能输入各式各样的信息,而有些不符合要求的数据会给我们的后端ASP处理程序带来不必要的麻烦,甚至导致网站出现一些安全问题。因此我们在将这 些信息保存到网站的数据库之前,要对这些用户所输入的信息进行数据的合法性校验,以便后面的程序可以安全顺利的执行。所以我们一般会在后端编写一个ASP 的校验程序来分析用户输入的数据是否是合法的。 或许有人会问了,使用运行在客户端的JavaScript不是可以更好更快的 来校验用户的数据吗?的确,这样在大多的情况下是可以的,为什么是大多情况下呢?因为你编写的JavaScript不一定可以完全正常的同时运行在IE以 及Netscape上面,因为微软的Jscript并不全和JavaScript相同,再加上还有一些浏览器不一定和微软以及Netscape兼容的很 好,所以很有可能在客户端的Javascript不会精确的校验用户输入的各种数据,而ASP程序是运行在服务器端的,只是和你的服务器的环境有关,无论 客户端是什么浏览器,对于你的ASP程序来说都是没有分别的,所以选择使用后端的ASP程序来进行数据合法性的校验是一个好的选择。 在使用ASP来进行后端的数据合法性校验的时候,有些人为满足不同环境下面的数据校验,编写了很多的函数来实现,比如,我们想要校验用户输入的URL 地址是否合法,是可以自己编写一段代码来逐个逐个字符的分析用户输入的信息,要分析的信息量小了,那还比较好办,若是分析的条件千变万化,那可就惨了,不 但要编写很长很繁琐的代码,而且运行的效率极其低下,有没有好的解决办法呢?有,那就是VBScritp5.0提供的“正则表达式”对象,只要你的服务器 安装了IE5.x,就会带VBScript5.0。其实,“正则表达式”原本是Unix下面的专利,尤其是在Perl语言中使用的最为广泛,正是由于“正 则表达式”的强大功能,才使得微软慢慢将正则表达式对象移植到了视窗系统上面,利用 “正则表达式”对象,我们就可以非常方便的对各种数据进行合法性的校验了。 首先,让我们来了解一下究竟什么是VBScript的“正则表达式”对象,我们先来看一段程序: Function CheckExp(patrn, strng) Dim regEx, Matches ' 建立变量。 Set regEx = New RegExp '建立正则表达式。 regEx.Pattern = patrn '设置模式。 regEx.IgnoreCase = true '设置是否区分字符大小写。 regEx.Global = True '设置全局可用性。 Matches = regEx.test(strng) '执行搜索。 CheckExp = matches End Function 在这段程序程序中,我们看到可以使用“New RegExp”来得到一个正则表达式对象,然后对这个对象进行正则匹配模板的赋值,也就是告诉正则表达式对象,你想要匹配一个什么样子的模板,然后使用方 法Test来检测待处理的数据究竟和我们给出的模版是否相匹配,如果不匹配,那就表明待处理的数据不是合法的数据,从而也就实现了数据合法性的校验,我们 可以看出,使用一个设计合理的匹配模板,我们可以轻松的校验一批格式类似的数据信息。 当然,VBScript5.0中的“正 则表达式”对象还有很多的其他的方法和属性,比如方法Replace(),利用他我们就可以很快的实现现在网上很时髦的UBB风格的论坛以及BBS,这不 在我们讨论范围之内,以后再加以论述,我们现在就看看在数据校验方面正则表达式对象常用的方法和属性: 常用方法: Execute 方法 描述:对指定的字符串执行正则表达式搜索。 语法:object.Execute(string) Execute 方法的语法包括以下几个部分: object:必需的。总是一个 RegExp 对象的名称。 string:必需的。要在其上执行正则表达式的文本字符串。 说明:正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。 Test方法 描述:对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 语法:object.Test(string) Test 方法的语法包括以下几个部分: object:必需的。总是一个 RegExp 对象的名称。 string:必需的。要执行正则表达式搜索的文本字符串。 说明:正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False。 常用属性: Global属性 描述:设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。 语法:object.Global [= True | False ] object 参数总是 RegExp 对象。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 False。 IgnoreCase属性 描述:设置或返回一个Boolean值,指明模式搜索是否区分大小写。 语法:object.IgnoreCase [= True | False ] object 参数总是一个 RegExp 对象。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 False。 Pattern属性 描述:设置或返回被搜索的正则表达式模式。 这是一个最重要的属性,我们主要是设置这个属性来实现数据校验的。 语法:object.Pattern [= "searchstring"] Pattern 属性的语法包含以下几个部分: object:必需的。总是一个 RegExp 对象变量。 searchstring:可选的。被搜索的正则字符串表达式。它可能包含设置部分表格中的各种正则表达式字符。 设置:在书写正则表达式的模式时使用了特殊的字符和序列。下表描述了可以使用的字符和序列,并给出了实例。 字符描述: \:将下一个字符标记为特殊字符或字面值。例如"n"与字符"n"匹配。"\n"与换行符匹配。序列"\"与"\"匹配,"\("与"("匹配。 ^ :匹配输入的开始位置。 $ :匹配输入的结尾。 * :匹配前一个字符零次或几次。例如,"zo*"可以匹配"z"、"zoo"。 + :匹配前一个字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 ? :匹配前一个字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。 .:匹配换行符以外的任何字符。 (pattern) 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括号字符(和 ),可使用"\(" 或 "\)"。 x|y:匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。 :n 为非负的整数。匹配恰好n次。例如,"o" 不能与 "Bob 中的 "o" 匹配,但是可以与"foooood"中的前两个o匹配。 :n 为非负的整数。匹配至少n次。例如,"o"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o"等价于"o+"。"o"等价于"o*"。 :m 和 n 为非负的整数。匹配至少 n 次,至多 m 次。例如,"o" 匹配 "fooooood"中前三个o。"o"等价于"o?"。 [xyz] :一个字符集。与括号中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。 [^xyz] :一个否定的字符集。匹配不在此括号中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p". [a-z] :表示某个范围内的字符。与指定区间内的任何字符匹配。例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。 [^m-z] :否定的字符区间。与不在指定区间内的字符匹配。例如,"[m-z]"与不在"m"到"z"之间的任何字符匹配。 \b :与单词的边界匹配,即单词与空格之间的位置。例如,"er\b" 与"never"中的"er"匹配,但是不匹配"verb"中的"er"。 \B :与非单词边界匹配。"ea*r\B"与"never early"中的"ear"匹配。 \d :与一个数字字符匹配。等价于[0-9]。 \D :与非数字的字符匹配。等价于[^0-9]。 \f :与分页符匹配。 \n :与换行符字符匹配。 \r :与回车字符匹配。 \s :与任何白字符匹配,包括空格、制表符、分页符等。等价于"[ \f\n\r\t\v]"。 \S :与任何非空白的字符匹配。等价于"[^ \f\n\r\t\v]"。 \t :与制表符匹配。 \v :与垂直制表符匹配。 \w :与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。 \W :与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。 \num :匹配 num个,其中 num 为一个正整数。引用回到记住的匹配。例如,"(.)"匹配两个连续的相同的字符。 \n:匹配 n,其中n 是一个八进制换码值。八进制换码值必须是 1, 2 或 3 个数字长。 例如,"" 和 "1" 都与一个制表符匹配。"11"等价于"1" 与 "1"。八进制换码值不得超过 256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。 \xn:匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。例如,"\x41"匹配"A"。"\x041"等价于"\x04" 和 "1"。允许在正则表达式中使用 ASCII 码。 好了,常用的方法和属性就是这些了,上面的语法介绍的已经很详细了,我们就没有必要在啰嗦了,接下来我们来看看在具体的例子里面如何使用这些方法和属性来 校验数据的合法性,我们还是举个例子吧,比如,我们想要对用户输入的电子邮件进行校验,那么,什么样的数据才算是一个合法的电子邮件呢?我可以这样输入: uestc95@263.net,当然我也会这样输入:xxx@yyy.com.cn,但是这样的输入就是非法的:xxx@@com.cn或者 @xxx.com.cn,等等,所以我们得出一个合法的电子邮件地址至少应当满足以下几个条件: 1. 必须包含一个并且只有一个符号“@” 2. 必须包含至少一个至多三个符号“.” 3. 第一个字符不得是“@”或者“.” 4. 不允许出现“@.”或者.@ 5. 结尾不得是字符“@”或者“.” 所以根据以上的原则和上面表中的语法,我们很容易的就可以得到需要的模板如下:"(\w)+[@](\w)+[.](\w)+" 接下来我们仔细分析一下这个模板,首先“\w”表示邮件的开始字符只能是包含下划线的单词字符,这样,满足了第三个条件;“[@]”表示在电子邮件中应 当匹配并且只能匹配一次字符“@”,满足了条件一;同样的“[.]”表示在电子邮件中至少匹配1个至多匹配3个字符“.” ,满足了第二个条件;模板最后的“(\w)+”表示结尾的字符只能是包含下划线在内的单词字符,满足了条件五;模板中间的“(\w)+”满足了条件四。 然后,我们就直接调用刚才的那个函数CheckExp("(\w)+[@](\w)+[.](\w)+",待校验的字符串)就好了,如果返回True就 表示数据是合法的,否则就是不正确的,怎么样,简单吧。我们还可以写出来校验身份证号码的模板:"([0-9])";校验URL的模板:"^http: //((\w)+[.])"等等;我们可以看到,这些模板为我们提供了很好的可重利用的模块,利用自己或者别人提供的各种模板,我们就可以方便快捷的进行 数据的合法性校验了,相信你一定会写出非常通用的模板的。 这样,我们只要定制不同的模板,就可以实现对不同数据的合法性校验了。所以,正则表达式对象中最重要的属性就是:“Pattern”属性,只要真正掌握了这个属性,才可以自由的运用正则表达式对象来为我们的数据校验进行服务。-------------------------------------------RegExp对象提供简单的正则表达式支持功能。 RegExp对象的用法: Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' 建立变量。 Set regEx = New RegExp ' 建立正则表达式。 regEx.Pattern = patrn ' 设置模式。 regEx.IgnoreCase = True ' 设置是否区分字符大小写。 regEx.Global = True ' 设置全局可用性。 Set Matches = regEx.Execute(strng) ' 执行搜索。 For Each Match in Matches ' 遍历匹配集合。 RetStr = RetStr & "Match found at position " RetStr = RetStr & Match.FirstIndex & ". Match Value is '" RetStr = RetStr & Match.Value & "'." & vbCRLF Next RegExpTest = RetStr End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) RegExp 对象的属性 ◎ Global属性 Global属性设置或返回一个 Boolean 值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。 语法 object.Global [= True | False ] object 参数总是 RegExp 对象。如果搜索应用于整个字符串,Global 属性的值为 True,否则其值为 False。默认的设置为 True。 Global 属性的用法(改变赋予 Global 属性的值并观察其效果): Function RegExpTest(patrn, strng) Dim regEx ' 建立变量。 Set regEx = New RegExp ' 建立规范表达式。 regEx.Pattern = patrn ' 设置模式。 regEx.IgnoreCase = True ' 设置是否区分字母的大小写。 regEx.Global = True ' 设置全程性质。 RegExpTest = regEx.Execute(strng) ' 执行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) ◎ IgnoreCase属性 IgnoreCase属性设置或返回一个Boolean值,指明模式搜索是否区分大小写。 语法 object.IgnoreCase [= True | False ] object 参数总是一个 RegExp 对象。如果搜索是区分大小写的,则 IgnoreCase 属性为 False;否则为 True。缺省值为 True。 IgnoreCase 属性的用法(改变赋予 IgnoreCase 属性的值以观察其效果): Function RegExpTest(patrn, strng) Dim regEx ' 建立变量。 Set regEx = New RegExp ' 建立正则表达式。 regEx.Pattern = patrn ' 设置模式。 regEx.IgnoreCase = True ' 设置是否区分大小写。 RegExpTest = regEx.Execute(strng) ' 执行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) ◎ Pattern属性 Pattern属性设置或返回被搜索的正则表达式模式。 语法 object.Pattern [= "searchstring"] Pattern 属性的语法包含以下几个部分: 语法说明: object 必需的。总是一个 RegExp 对象变量。 searchstring 可选的。被搜索的正则字符串表达式。它可能包含设置部分表格中的各种正则表达式字符。 设置 在书写正则表达式的模式时使用了特殊的字符和序列。下面描述了可以使用的字符和序列,并给出了实例。 \ 将下一个字符标记为特殊字符或字面值。例如"n"与字符"n"匹配。"\n"与换行符匹配。序列"\"与"\"匹配对面,"\("与"("匹配。 ^ 匹配输入的开始位置。 $ 匹配输入的结尾。 * 匹配前一个字符零次或几次。例如,"zo*"可以匹配"z"、"zoo"。 + 匹配前一个字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 ? 匹配前一个字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。 . 匹配换行符以外的任何字符。 (pattern) 与模式匹配并记住匹配。匹配的子字符串可以从作为结果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括号字符(和 ),可使用"\(" 或 "\)"。 x|y 匹配 x 或 y。例如 "z|food" 可匹配 "z" 或 "food"。"(z|f)ood" 匹配 "zoo" 或 "food"。 n 为非负的整数。匹配恰好n次。例如,"o" 不能与 "Bob 中的 "o" 匹配,但是可以与"foooood"中的前两个o匹配。 {n,} n 为非负的整数。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等价于"o+"。"o{0,}"等价于"o*"。 {n,m} m 和 n 为非负的整数。匹配至少 n 次,至多 m 次。例如,"o{1,3}" 匹配 "fooooood"中前三个o。"o{0,1}"等价于"o?"。 [xyz] 一个字符集。与括号中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。 [^xyz] 一个否定的字符集。匹配不在此括号中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p". [a-z] 表示某个范围内的字符。与指定区间内的任何字符匹配。例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。 [^m-z] 否定的字符区间。与不在指定区间内的字符匹配。例如,"[m-z]"与不在"m"到"z"之间的任何字符匹配。 \b 与单词的边界匹配,即单词与空格之间的位置。例如,"er\b" 与"never"中的"er"匹配,但是不匹配"verb"中的"er"。 \B 与非单词边界匹配。"ea*r\B"与"never early"中的"ear"匹配。 \d 与一个数字字符匹配。等价于[0-9]。 \D 与非数字的字符匹配。等价于[^0-9]。 \f 与分页符匹配。 \n 与换行符字符匹配。 \r 与回车字符匹配。 \s 与任何白字符匹配,包括空格、制表符、分页符等。等价于"[ \f\n\r\t\v]"。 \S 与任何非空白的字符匹配。等价于"[^ \f\n\r\t\v]"。 \t 与制表符匹配。 \v 与垂直制表符匹配。 \w 与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。 \W 与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。 \num 匹配 num个,其中 num 为一个正整数。引用回到记住的匹配。例如,"(.)"匹配两个连续的相同的字符。 \n 匹配 n,其中n 是一个八进制换码值。八进制换码值必须是 1, 2 或 3 个数字长。例如,"" 和 "1" 都与一个制表符匹配。"11"等价于"1" 与 "1"。八进制换码值不得超过 256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。 \xn 匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。例如,"\x41"匹配"A"。"\x041"等价于"\x04" 和 "1"。允许在正则表达式中使用 ASCII 码。 Pattern 属性的用法: Function RegExpTest(patrn, strng) Dim regEx ' 建立变量。 Set regEx = New RegExp ' 建立正则表达式。 regEx.Pattern = patrn ' 设置模式。 regEx.IgnoreCase = True ' 设置是否区分大小写。 RegExpTest = regEx.Execute(strng) ' 执行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) RegExp对象的方法 ◎ Execute方法 Execute方法对指定的字符串执行正则表达式搜索。 语法 object.Execute(string) 语法部分描述 object 必需的。总是一个 RegExp 对象的名称。 string 必需的。要在其上执行正则表达式的文本字符串。 说明 正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。 Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。 Execute 方法的用法: Function RegExpTest(patrn, strng) Dim regEx ' 建立变量。 Set regEx = New RegExp ' 建立正则表达式。 regEx.Pattern = patrn ' 设置模式。 regEx.IgnoreCase = False ' 设置区分大小写。 regEx.Global = True ' 搜索全部匹配。 RegExpTest = regEx.Execute(strng) ' 执行搜索。 End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) ◎ Replace方法 Replace方法替换在正则表达式查找中找到的文本。 语法 object.Replace(string1, string2) 语法部分描述 object 必需的。总是一个 RegExp 对象的名称。 string1 必需的。string1 是将要进行文本替换的字符串。 string2 必需的。 string2 是替换文本字符串。 说明 被替换的文本的实际模式是通过 RegExp 对象的 Pattern 属性设置的。 Replace 方法返回 string1 的副本,其中的 RegExp.Pattern 文本已经被替换为 string2。如果没有找到匹配的文本,将返回原来的 string1 的副本。 eplace 方法的用法: Function ReplaceTest(patrn, replStr) Dim regEx, str1 ' 建立变量。 str1 = "The quick brown fox jumped over the lazy dog." Set regEx = New RegExp ' 建立正则表达式。 regEx.Pattern = patrn ' 设置模式。 regEx.IgnoreCase = True ' 设置是否区分大小写。 ReplaceTest = regEx.Replace(str1, replStr) ' 作替换。 End Function MsgBox(ReplaceTest("fox", "cat")) ' 将 'fox' 替换为 'cat'。 ;另外,Replace 方法在模式中替换 subexpressions 。 下面对以前示例中函数的调用,替换了原字符串中的所有字对: MsgBox(ReplaceText("(\S+)(\s+)(\S+)", "")) ' Swap pairs of words. ◎ Test方法 Test方法对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 语法 object.Test(string) 语法部分描述 object 必需的。总是一个 RegExp 对象的名称。 string 必需的。要执行正则表达式搜索的文本字符串。 说明 正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。 如果找到了匹配的模式,Test方法返回True;否则返回False。 Test 方法的用法: Function RegExpTest(patrn, strng) Dim regEx, retVal ' 建立变量。 Set regEx = New RegExp ' 建立正则表达式。 regEx.Pattern = patrn ' 设置模式。 regEx.IgnoreCase = False ' 设置是否区分大小写。 retVal = regEx.Test(strng) ' 执行搜索测试。 If retVal Then RegExpTest = "找到一个或多个匹配。" Else RegExpTest = "未找到匹配。" End If End Function MsgBox(RegExpTest("is.", "IS1 is2 IS3 is4")) RegExp 对象 构造函数 new RegExp(“表达式”,”属性”) FF: Firefox, N: Netscape, IE: Internet Explorer;数字表示此版本以后支持 属性 描述 FF N IE global RegExp 对象是否具有标志 g。 1 4 4 ignoreCase RegExp 对象是否具有标志 i。 1 4 4 lastIndex 一个整数,标示开始下一次匹配的字符位置。 1 4 4 multiline RegExp 对象是否具有标志 m。 1 4 4 source 正则表达式的源文本。 1 4 4 方法 描述 FF N IE exec 检索字符串中指定的值。返回找到的值(存放于数组中)。 1 4 4 test 检索字符串中指定的值。返回 true 或 false。 1 4 4 说明: 1.exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string。 2.使用过的正则对象会从上次匹配位置开始新匹配。 3.如果构造函数中属性包含i,会把所有匹配项强制转换为小写。 4.正则对象中不包含g的话只处理一次匹配。 简单示例: 实例化一个RegExp: var reg = new RegExp('[a-z]+','img'); // 检测包含连续字母的字符串 var str = '12345abcde67890FGHIJK_)(*&^%$#@!'; reg.test(str); // 返回true reg.lastIndex = 0; // 如果继续使用reg而没有重新实例化,reg会从上次的匹配项以后查找,故需要重置 matches = []; while (match = reg.exec(str)) { matches.push(match[0]); // match为一个数组: match[0]为本次匹配到的字符串;match[‘input’]为被匹配字符串,即str;match[‘index’]为本次匹配到的字符串的位置;match[n](n>0)为正则表达式中的第n个子式匹配内容(如果有的话) } alert(matches.join(',')); // abcde,fghijk 说明:FGHIJK也被匹配了是因为属性中包含 i:不区分大小写。 支持正则表达式的 String 对象的方法 方法 描述 FF N IE search 检索与正则表达式相匹配的值,返回位置。 1 4 4 match 找到一个或多个(含属性g)正在表达式的匹配,返回字符串或数组 1 4 4 replace 替换与正则表达式匹配的子串,返回替换后的字符串。 1 4 4 split 把字符串分割为字符串数组,返回数组。 1 4 4 说明: 1. replace函数的第二个参数可以是一个函数,此时会调用此函数处理每一次匹配。 2. replace函数的正则参数如果不包含g属性,将只替换第一个匹配。 简单示例: 将 str中的url添加上html a标签。(注意:此demo代码并不实用) var reg = new RegExp("([ftph]+://[a-zA-Z0-9\._-]+)","mg"); str = str.replace(reg,""); var sentence = "I am a sentence!"; var words = sentence.split(/\s+/); // words=[I,am,a,sentence!] 主要参考:http://www.w3school.com.cn/js/jsref_obj_regexp.asp 其它链接:http://regexlib.com/Default.aspx // 如其名,Regular Expression Library 1、 本站不保证以上观点正确,就算是本站原创作品,本站也不保证内容正确。 2、如果您拥有本文版权,并且不想在本站转载,请书面通知本站立即删除并且向您公开道歉! |
本站协议 |
版权信息 |
关于我们 |
本站地图 |
营业执照 |
发票说明 |
付款方式 |
联系方式
深圳市宝安区西乡五壹电子商行——粤ICP备16073394号-1;地址:深圳西乡河西四坊183号;邮编:518102 E-mail:51dz$163.com($改为@);Tel:(0755)27947428 工作时间:9:30-12:00和13:30-17:30和18:30-20:30,无人接听时可以再打手机13537585389 |