数量表示符
Flash Player 9 和更高版本,Adobe AIR 1.0 和更高版本
使用数量表示符指定字符或序列在模式中的重复次数,如下所示:
数量表示符元字符
|
说明
|
*
(星号)
|
匹配前面重复零次或多次的项目。
|
+
(加号)
|
匹配前面重复一次或多次的项目。
|
?
(问号)
|
匹配前面重复零次或一次的项目。
|
{
n
}
{
n
,}
和
{
n
,
n
}
|
指定前一项目的数值数量或数量范围:
/A{27}/
匹配重复 27 次的字符 A。
/A{3,}/
匹配重复 3 次或更多次的字符 A。
/A{3,5}/
匹配重复 3 到 5 次的字符 A。
|
您可以将数量表示符应用到单个字符、字符类或组:
您可以在应用数量表示符的括号组内使用数量表示符。例如,下面的数量表示符匹配诸如
word
和
word-word-word
的字符串:
/\w+(-\w+)*/
默认情况下,正则表达式执行所谓的“无限匹配”
。
正则表达式中的任何子模式(如
.*
)都会尝试在字符串中匹配尽可能多的字符,然后再执行正则表达式的下一部分。例如,使用以下正则表达式和字符串:
var pattern:RegExp = /<p>.*<\/p>/;
str:String = "<p>Paragraph 1</p> <p>Paragraph 2</p>";
正则表达式匹配整个字符串:
<p>Paragraph 1</p> <p>Paragraph 2</p>
但是,假如您只想匹配一个
<p>...</p>
组。则可以通过以下操作实现:
<p>Paragraph 1</p>
在所有数量表示符后添加问号 (
?
) 以将其更改为所谓的“惰性数量表示符”。例如,下面的正则表达式使用惰性数量表示符
*?
匹配
<p>
后跟数量最少(惰性)的字符,再跟
</p>
的模式:
/<p>.*?<\/p>/
有关数量表示符,请牢记以下几点:
-
数量表示符
{0}
和
{0,0}
不会从匹配中排除项目。
-
不要结合使用多个数量表示符,例如
/abc+*/
中。
-
在除非设置
s
(
dotall
) 标志,否则不会跨越多行,即使后跟
*
数量表示符。例如,请看以下代码:
var str:String = "<p>Test\n";
str += "Multiline</p>";
var re:RegExp = /<p>.*<\/p>/;
trace(str.match(re)); // null;
re = /<p>.*<\/p>/s;
trace(str.match(re));
// output: <p>Test
// Multiline</p>
有关详细信息,请参阅
标志和属性
。
|
|
|