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

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

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


定义及方法

[1] RegExp 是正则表达式的缩写。

当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp 就是这种模式。

简单的模式可以是一个单独的字符。

更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。

您可以规定字符串中的检索位置,以及要检索的字符类型,等等。

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具

RegExp 对象用于存储检索模式。

通过 new 关键词来定义 RegExp 对象。以下代码定义了名为 patt1 RegExp 对象,其模式是 "e"

var patt1 = new RegExp("e");  创建RegExp对象语法

RegExp 对象有 3 个方法:test()exec() 以及 compile()

test()

test() 方法检索字符串中的指定值。返回值是 true false

例子:

?

1

2

var patt1 = new RegExp("e"); document.write(patt1.test("The best things in life are free"));

var patt1 = new RegExp("e"); document.write(patt1.test("The best things in life are free"));

由于该字符串中存在字母 "e",以上代码的输出将是:

true

true

exec()

exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null

例子 1

?

1

2

var patt1 = new RegExp("e"); document.write(patt1.exec("The best things in life are free"));

var patt1 = new RegExp("e"); document.write(patt1.exec("The best things in life are free"));

由于该字符串中存在字母 "e",以上代码的输出将是:

e e

例子 2

您可以向 RegExp 对象添加第二个参数,以设定检索。例如,如果需要找到所有某个字符的所有存在,则可以使用 "g" 参数 ("global")

如需关于如何修改搜索模式的完整信息,请访问我们的 RegExp 对象参考手册。

在使用 "g" 参数时,exec() 的工作原理如下:

找到第一个 "e",并存储其位置

如果再次运行 exec(),则从存储的位置开始检索,并找到下一个 "e",并存储其位置

?

1

2

var patt1 = new RegExp("e", "g"); do { result = patt1.exec("The best things in life are free"); document.write(result); } while ( result != null )

var patt1 = new RegExp("e", "g"); do { result = patt1.exec("The best things in life are free"); document.write(result); } while ( result != null )

由于这个字符串中 6 "e" 字母,代码的输出将是:

eeeeeenull

eeeeeenull

compile()

compile() 方法用于改变 RegExp

compile() 既可以改变检索模式,也可以添加或删除第二个参数。

例子

 

1

2

var patt1 = new RegExp("e"); document.write(patt1.test("The best things in life are free")); patt1.compile("d"); document.write(patt1.test("The best things in life are free"));

var patt1 = new RegExp("e"); document.write(patt1.test ("The best things in life are free")); patt1.compile("d"); document.write(patt1.test("The best things in life are free"));

由于字符串中存在 "e",而没有 "d",以上代码的输出是:

truefalse

new RegExp(pattern,attributes);

参数:

参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 "g""i" "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 正则表达式,而不是字符串,则必须省略该参数。

返回值:

一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。

如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

抛出:

SyntaxError - 如果 pattern 不是合法的正则表达式,或 attributes 含有 "g""i" "m" 之外的字符,抛出该异常。

TypeError - 如果 pattern RegExp 对象,但没有省略 attributes 参数,抛出该异常。

修饰符

修饰符

描述

i

执行对大小写不敏感的匹配。

g

执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m

执行多行匹配。

方括号:

方括号用于查找某个范围内的字符:

表达式

描述

[abc]

查找方括号之间的任何字符。

[^abc]

查找任何不在方括号之间的字符。

[0-9]

查找任何从 0 9 的数字。

[a-z]

查找任何从小写 a 到小写 z 的字符。

[A-Z]

查找任何从大写 A 到大写 Z 的字符。

[a-Z]

查找任何从小写 a 到大写 Z 的字符。

[adgk]

查找给定集合内的任何字符。

[^adgk]

查找给定集合外的任何字符。

[red|blue|green]

查找任何指定的选项。

支持正则表达式String对象的方法:

FF: Firefox,IE: Internet Explorer

方法

描述

FF

IE

search

检索与正则表达式相匹配的值。

1

4

match

找到一个或多个正则表达式的匹配。

1

4

replace

替换与正则表达式匹配的子串。

1

4

split

把字符串分割为字符串数组。

1

4

 

 

=====================================================================

代码:

自:http://www.jb51.net/article/26503.htm

复制代码 代码如下:


Dim re
Set re = new RegExp '
创建RegExp实例
re.Pattern = "ab+c" '
定义正则表达式文字,你可以在这里替换正则表达式
Dim myString
myString = "abcefg" '
定义要匹配的字符串,可以进行替换
Response.write(re.Execute(myString)(0)) '
进行匹配测试,并写出结果

 

复制代码 代码如下:


<%
Dim re
Set re = new RegExp '
创建RegExp实例
re.Pattern = "\w+" '
定义正则表达式文字
Dim myString
myString = "VBScript version 5.6 provides many new features."
'
进行匹配测试,并写出是否匹配成功
If re.Test(myString) Then
Response.write("
匹配成功!")
Else
Response.write("
匹配不成功!")
End If
%>

 

复制代码 代码如下:


<%
Dim re
Set re = new RegExp '
创建RegExp实例
re.Pattern = "\s" '
定义正则表达式文字,这里是匹配空白
Dim myString
myString = "VBScript version 5.6 provides many new features."
myString = re.replace(myString, "-") '
-替换空白,返回替换后的字符串
'
写出结果
Response.write(myString)
%>

 

复制代码 代码如下:


<%
Dim re
Set re = new RegExp '
创建RegExp实例
re.Global = True
re.Pattern = "\s" '
定义正则表达式文字,这里是匹配空白
Dim myString
myString = "VBScript version 5.6 provides many new features."
myString = re.replace(myString, "-") '
-替换空白,返回替换后的字符串
'
写出结果
Response.write(myString)
%>

 

复制代码 代码如下:


<%
Dim re
Set re = new RegExp '
创建RegExp实例
re.Global = True
re.Pattern = "(\w+)-(\w+)" '
定义正则表达式模式文字
Dim myString
myString = "flip-flop"
myString = re.replace(myString, "$1-$2")
'$1
表示第一个\w+$2表示第二个\w+,第一个\w+匹配flip,第二个\w+匹配flop
'
所以$1-$2相当于flip-flop
'
写出结果
Response.write(myString)
%>

 

复制代码 代码如下:


<%
Dim re
Set re = new RegExp '
创建RegExp实例
re.Global = True
re.Pattern = "(\S+)(\s+)(\S+)" '
定义正则表达式模式文字
Dim myString
myString = "flip flop"
myString = re.replace(myString, "$3$2$1")
'$1
表示第一个\S+$3表示第二个\S+$2表示\s+
'
所以$3$2$1相当于flop flip
'
写出结果
Response.write(myString)
%>

 

复制代码 代码如下:


<%
Dim re
Set re = new RegExp '
创建RegExp实例
re.Global = True
re.Pattern = "\w+" '
定义正则表达式模式文字
Dim myString
myString = "VBScript version 5.6 provides many new features."
Set Matches = re.Execute(myString) '
执行搜索,该集合用来保存匹配的结果
'
进行匹配测试,并写出结果
'
迭代Matches集合
For Each Match in Matches
'
写出结果
Response.write(Match.FirstIndex & "-" & (Match.FirstIndex + Match.Length) & " " & Match.Value & "<br />")
Next
%>

 

复制代码 代码如下:


<%
Dim re
Set re = new RegExp '
创建RegExp实例
're.Global = True
注释掉这一行
re.Pattern = "\w+" '
定义正则表达式模式文字
Dim myString
myString = "VBScript version 5.6 provides many new features."
Set Matches = re.Execute(myString) '
执行搜索,该集合用来保存匹配的结果
'
进行匹配测试,并写出结果
'
迭代Matches集合
For Each Match in Matches
'
写出结果
Response.write(Match.FirstIndex & "-" & (Match.FirstIndex + Match.Length) & " " & Match.Value & "<br />")
Next
%>

 



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