1.创建 RegExp 对象的语法:
new RegExp(pattern,
Attributes);
参数
参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。
参数 Attributes 是一个可选的字符串,包含属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。
返回值
一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。
如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。
如果没有Attributes参数,只匹配pattern表示的字符串。例:
Var reCat = new RegExp(“cat”);//只会匹配cat
2.修饰符
修饰符
|
描述
|
i
|
执行对大小写不敏感的匹配。
|
g
|
执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
|
m
|
执行多行匹配。
|
3.方括号
方括号用于查找某个范围内的字符:
表达式
|
描述
|
[abc]
|
查找方括号之间的任何字符。
|
[^abc]
|
查找任何不在方括号之间的字符。
|
[0-9]
|
查找任何从 0 至 9 的数字。
|
[a-z]
|
查找任何从小写 a 到小写 z 的字符。
|
[A-Z]
|
查找任何从大写 A 到大写 Z 的字符。
|
[a-Z]
|
查找任何从小写 a 到大写 Z 的字符。
|
[adgk]
|
查找给定集合内的任何字符。
|
[^adgk]
|
查找给定集合外的任何字符。
|
[red|blue|green]
|
查找任何指定的选项。
|
4.元字符
元字符(Metacharacter)是拥有特殊含义的字符:
([{\^$|}?*+.
元字符
|
描述
|
.
|
查找单个字符,除了换行和行结束符。
|
\w
|
查找单词字符。
|
\W
|
查找非单词字符。
|
\d
|
查找数字。
|
\D
|
查找非数字字符。
|
\s
|
查找空白字符。
|
\S
|
查找非空白字符。
|
\b
|
查找位于单词的开头或结尾的匹配。
|
\B
|
查找不处在单词的开头或结尾的匹配。
|
\0
|
查找 NUL 字符。
|
\n
|
查找换行符。
|
\f
|
查找换页符。
|
\r
|
查找回车符。
|
\t
|
查找制表符。
|
\v
|
查找垂直制表符。
|
\xxx
|
查找以八进制数 xxx 规定的字符。
|
\xdd
|
查找以十六进制数 dd 规定的字符。
|
\uxxxx
|
查找以十六进制数 xxxx 规定的 Unicode 字符。
|
5.量词
量词
|
描述
|
n+
|
匹配任何包含至少一个 n 的字符串。
|
n*
|
匹配任何包含零个或多个 n 的字符串。
|
n?
|
匹配任何包含零个或一个 n 的字符串。
|
n{X}
|
匹配包含 X 个 n 的序列的字符串。
|
n{X,Y}
|
匹配包含 X 或 Y 个 n 的序列的字符串。
|
n{X,}
|
匹配包含至少 X 个 n 的序列的字符串。
|
n$
|
匹配任何结尾为 n 的字符串。
|
^n
|
匹配任何开头为 n 的字符串。
|
?=n
|
匹配任何其后紧接指定字符串 n 的字符串。
|
?!n
|
匹配任何其后没有紧接指定字符串 n 的字符串。
|
6.RegExp 对象属性
属性
|
描述
|
FF
|
IE
|
global
|
RegExp 对象是否具有标志 g。
|
1
|
4
|
ignoreCase
|
RegExp 对象是否具有标志 i。
|
1
|
4
|
lastIndex
|
一个整数,标示开始下一次匹配的字符位置。
|
1
|
4
|
multiline
|
RegExp 对象是否具有标志 m。
|
1
|
4
|
source
|
正则表达式的源文本。
|
1
|
4
|
7.RegExp 对象方法
方法
|
描述
|
FF
|
IE
|
compile
|
编译正则表达式。
|
1
|
4
|
exec
|
检索字符串中指定的值。返回找到的值,并确定其位置。
|
1
|
4
|
test
|
检索字符串中指定的值。返回 true 或 false。
|
1
|
4
|
8.支持正则表达式的 String 对象的方法
方法
|
描述
|
FF
|
IE
|
search
|
检索与正则表达式相匹配的值。
|
1
|
4
|
match
|
找到一个或多个正则表达式的匹配。
|
1
|
4
|
replace
|
替换与正则表达式匹配的子串。
|
1
|
4
|
split
|
把字符串分割为字符串数组。
|
|
|
Js正则匹配示例:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="RegExpTech.aspx.cs" Inherits="js.RegExpTech" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
请输入要匹配的字符串:<textarea id="txtTestSource" rows="5" cols="20"></textarea><br />
请输入匹配模式:<input type="text" id="txtRegPattern" /><br />
是否忽略大小写:<input type="checkbox" id="cbxCaseSensitive" />
是否全局匹配:<input type="checkbox" id="cbxGlobalTag" />
是否多行匹配:<input type="checkbox" id="cbxMulitLine" /><br />
<input type="button" id="btnTest" value="测试匹配(Test)" onclick="fn_Test();" />
<input type="button" id="Button1" value="执行匹配(Exec)" onclick="fn_Exec();" />
<input type="button" id="Button2" value="匹配(Match)" onclick="fn_Match();" />
</div>
</form>
<script type="text/javascript">
function fn_Test() {
var regAttributes = "";
if(document.getElementById("cbxCaseSensitive").checked){
regAttributes = regAttributes + "i";
}
if(document.getElementById("cbxGlobalTag").checked){
regAttributes = regAttributes + "g";
}
if(document.getElementById("cbxMulitLine").checked){
regAttributes = regAttributes + "m";
}
var regPattern = document.getElementById("txtRegPattern").value;
regPattern = regPattern.replace("\\","\\\\");
var regExp = new RegExp(regPattern, regAttributes);
alert("匹配结果:"+regExp.test(document.getElementById("txtTestSource").value));
}
function fn_Exec() {
var regAttributes = "";
if (document.getElementById("cbxCaseSensitive").checked) {
regAttributes = regAttributes + "i";
}
if (document.getElementById("cbxGlobalTag").checked) {
regAttributes = regAttributes + "g";
}
if (document.getElementById("cbxMulitLine").checked) {
regAttributes = regAttributes + "m";
}
var regPattern = document.getElementById("txtRegPattern").value;
var regExp = new RegExp(regPattern, regAttributes);
var testSource = document.getElementById("txtTestSource").value;
var result;
var lastIndex=0;
while ((result = regExp.(testSource)) != null){
if (lastIndex == regExp.lastIndex) {
break;
}
else {
alert("匹配结果:lastIndex=" + regExp.lastIndex + ";value=" + result);
lastIndex = regExp.lastIndex;
}
}
}
</script>
</body>
</html>
c