有两种方法可以创建正则表达式实例。一种方法是使用正斜杠字符 (
/
) 来界定正则表达式,另一种是使用
new
构造函数。例如,以下两个正则表达式是等效的:
var pattern1:RegExp = /bob/i;
var pattern2:RegExp = new RegExp("bob", "i");
正斜杠界定正则表达式的方式与用引号界定字符串文本的方式相同。正斜杠内的正则表达式部分定义“模式”
。
正则表达式还可以在后一个界定斜杠后包含“标志”。这些标志也看作是正则表达式的一部分,但是它们独立于模式。
使用
new
构造函数时,使用两个字符串来定义正则表达式。第一个字符串定义模式,第二个字符串定义标志,如下例所示:
var pattern2:RegExp = new RegExp("bob", "i");
如果在使用正斜杠界定符定义的正则表达式中包含正斜杠,则必须在正斜杠前面加上反斜杠 (
\
) 转义字符。例如,下面的正则表达式与模式
1/2
匹配:
var pattern:RegExp = /1\/2/;
若要在使用
new
构造函数定义的正则表达式中包含引号,您必须在引号前面加上反斜杠 (
\
) 转义字符(就像定义任何 String 文本一样)。例如,下面的正则表达式与模式
eat at "joe's"
匹配:
var pattern1:RegExp = new RegExp("eat at \"joe's\"", "");
var pattern2:RegExp = new RegExp('eat at "joe\'s"', "");
请勿在使用正斜杠界定符定义的正则表达式中对引号使用反斜杠转义字符。同样地,不要在使用
new
构造函数定义的正则表达式中对正斜杠使用转义字符。下列正则表达式是等效的,它们都定义了模式
1/2 "joe's"
:
var pattern1:RegExp = /1\/2 "joe's"/;
var pattern2:RegExp = new RegExp("1/2 \"joe's\"", "");
var pattern3:RegExp = new RegExp('1/2 "joe\'s"', '');
此外,在使用
new
构造函数定义的正则表达式中,若要使用以反斜杠 (
\
) 字符开头的元序列(例如,
\d
,用于匹配任何数字),请键入两个反斜杠字符:
var pattern:RegExp = new RegExp("\\d+", ""); // matches one or more digits
在本实例中您必须键入两个反斜杠字符,因为
RegExp()
构造函数方法的第一个参数是字符串,而在字符串文本中必须键入两个反斜杠字符才能将其识别为单个反斜杠字符。
后面几节将介绍定义正则表达式模式的语法。
有关标志的详细信息,请参阅
标志和属性
。