关于RegExp正则表达式第二部分

发布时间:2015年3月10日 作者:未知 查看次数:1664

关于RegExp正则表达式第二部分


RegExp对象的方法

Execute方法

Execute方法对指定的字符串执行正则表达式搜索。

语法

object.Execute(string)

语法部分描述

object 必需的。总是一个 RegExp 对象的名称。

string 必需的。要在其上执行正则表达式的文本字符串。

说明

正则表达式搜索的设计模式是通过 RegExp 对象的 Pattern 来设置的。

Execute 方法返回一个 Matches 集合,其中包含了在 string 中找到的每一个匹配的 Match 对象。如果未找到匹配,Execute 将返回空的 Matches 集合。

Execute 方法的用法:

?

1

2

3

4

5

6

7

8

9

10

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 方法的用法:

?

1

2

3

4

5

6

7

8

9

10

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 方法的用法:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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 对象是否具有标志 g1 4 4

ignoreCase

RegExp 对象是否具有标志 i1 4 4

lastIndex

一个整数,标示开始下一次匹配的字符位置。1 4 4

multiline

RegExp 对象是否具有标志 m1 4 4

source

正则表达式的源文本。1 4 4

方法 描述 FF N IE

exec

检索字符串中指定的值。返回找到的值(存放于中)。1 4 4

test

检索字符串中指定的值。返回 true false1 4 4

说明:

exec() 找到了匹配的文本,则返回一个结果数组。否则,返回 null。此数组的第 0 个元素是与正则表达式相匹配的文本,第 1 个元素是与 RegExpObject 的第 1 个子表达式相匹配的文本(如果有的话),第 2 个元素是与 RegExpObject 的第 2 个子表达式相匹配的文本(如果有的话),以此类推。除了数组元素和 length 属性之外,exec() 方法还返回两个属性。index 属性声明的是匹配文本的第一个字符的位置。input 属性则存放的是被检索的字符串 string

使用过的正则对象会从上次匹配位置开始新匹配。

如果构造函数中属性包含i,会把所有匹配项强制转换为小写。

正则对象中不包含g的话只处理一次匹配。

简单示例:

实例化一个RegExp

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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

说明:

replace函数的第二个参数可以是一个函数,此时会调用此函数处理每一次匹配。

replace函数的正则参数如果不包含g属性,将只替换第一个匹配。

简单示例:

str中的url添加上html a标签。(注意:此demo代码并不实用)

?

1

2

3

4

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!]

 



版权所有!www.sieye.cn
E.Mail:sieye@sohu.com QQ:66697110