正则表达式就是一个字符模式。和String对象类似,在JavaScript中正则表达式也是一个对象,它主要用于字符串的模式匹配。创建正则表达式有两种方式:隐式创建(文字量方法)和显示创建(使用构造函数)。
隐式创建正则表达式
使用隐式方法创建正则表达式的方法为:将文字量的正则表达式赋值给一个变量。正则表达式是包含在两个斜杠之间的一个或多个字符,在后一个斜杠的后面,可以指定一个或多个选项。隐式创建正则表达式的语法为:
var
regExp = /pattern/flags
|
其中,“pattern”为指定的匹配模式,flags为0个或多个可选项,这些选项及其含义如下:
i
:表示忽略大小写,就是在字符串匹配的时候不区分大小写。g
:表示全局匹配,即匹配字符串中出现的所有模式。m
:表示进行多行匹配。ECMAScript标准化之前,不支持m
属性。如果pattern是正则表达式,而不是字符串,则必须省略该参数。
例如下面的正则表达式都是有效的正则表达式:
var
regExp1 = /abc/;
var
regExp2 = /abc/gi;
var
regExp3 = /^JavaScript/;
var
regExp4 = /0[0-9][0-9]*/;
var
regExp5 = /\binter/i;
显示的创建正则表达式是通过构造函数RegExp()
来实现。构造函数RegExp()
中有2个参数:第一个参数指定正则表达式,这是正则表达式的字符串表示方法,例如:“abc”表示隐式创建中的/abc/
,第二个参数是可选参数,它指定正则表达式的选项,它的标记字符和隐式创建时的相同,意义也相同。显示创建正则表达式的语法为:
var
regExp =
new
RegExp(
"pattern"
,
"flags"
);
正则表达式对象RegExp
提供了两个可用的方法:test()
和exec()
。
test()方法
test()
方法的功能为:测试字符串中是否包含了匹配该正则表达式的子串,如果包含了这样的子串,那么返回true
,否则返回false
。
在使用test()
方法完成检测之后,RegExp
对象的lastIndex
属性包含了下一次字符串搜索的开始位置。如果进行全局搜索,那么lastIndex
属性的值是最后一个匹配字符串后面一个字符的位置。来看下面的例子:
var
mystring =
"hello regExp!"
;
var
regexp = /reg/i;
if
(regexp.test(mystring)){
alert(
"找到了指定模式的字符串"
);
}
else
{
alert(
"没有找到指定模式的字符串"
);
}