一个正则表辑ּ是由普通字W(例如字符 a ?zQ以?qing)特D字W(UCؓ(f)元字W)(j)l成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符丌Ӏ正则表辑ּ作ؓ(f)一个模板,某个字W模式与所搜烦(ch)的字W串q行匚w?
q里有一些可能会(x)遇到的正则表辑ּCZQ?
Visual Basic Scripting Edition
VBScript
匚w
/^\[ \t]*$/
"^\[ \t]*$"
匚w一个空白行?
/\d{2}-\d{5}/
"\d{2}-\d{5}"
验证一个ID L(fng)是否׃?位数字,一个连字符以及(qing)一?位数字组成?
/<(.*)>.*<\/\1>/
"<(.*)>.*<\/\1>"
匚w一?HTML 标记?
下表是元字符?qing)其在正则表辑ּ上下文中的行为的一个完整列表:(x)
字符
描述
\
下一个字W标Cؓ(f)一个特D字W、或一个原义字W、或一?后向引用、或一个八q制转义W。例如,'n' 匚w字符 "n"?\n' 匚w一个换行符。序?'\\' 匚w "\" ?"\(" 则匹?"("?
^
匚w输入字符串的开始位|。如果设|了(jin) RegExp 对象?Multiline 属性,^ 也匹?'\n' ?'\r' 之后的位|?
$
匚w输入字符串的l束位置。如果设|了(jin)RegExp 对象?Multiline 属性,$ 也匹?'\n' ?'\r' 之前的位|?
*
匚w前面的子表达式零ơ或多次。例如,zo* 能匹?"z" 以及(qing) "zoo"?* {h(hun)于{0,}?
+
匚w前面的子表达式一ơ或多次。例如,'zo+' 能匹?"zo" 以及(qing) "zoo"Q但不能匚w "z"? {h(hun)?{1,}?
?
匚w前面的子表达式零ơ或一ơ。例如,"do(es)?" 可以匚w "do" ?"does" 中的"do" ? {h(hun)?{0,1}?
{n}
n 是一个非负整数。匹配确定的 n ơ。例如,'o{2}' 不能匚w "Bob" 中的 'o'Q但是能匚w "food" 中的两个 o?
{n,}
n 是一个非负整数。至匹配n ơ。例如,'o{2,}' 不能匚w "Bob" 中的 'o'Q但能匹?"foooood" 中的所?o?o{1,}' {h(hun)?'o+'?o{0,}' 则等价于 'o*'?
{n,m}
m ?n 均ؓ(f)非负整数Q其中n <= m。最匹?n ơ且最多匹?m ơ?"o{1,3}" 匹?"fooooood" 中的前三?o?o{0,1}' {h(hun)?'o?'。请注意在逗号和两个数之间不能有空根{?
?
当该字符紧跟在Q何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面Ӟ匚w模式是非贪婪的。非贪婪模式可能少的匹配所搜烦(ch)的字W串Q而默认的贪婪模式则尽可能多的匚w所搜烦(ch)的字W串。例如,对于字符?"oooo"Q?o+?' 匹配单?"o"Q?'o+' 匹配所?'o'?
.
匚w?"\n" 之外的Q何单个字W。要匚w包括 '\n' 在内的Q何字W,请用象 '[.\n]' 的模式?
(pattern)
匚wpattern q获取这一匚w。所获取的匹配可以从产生?Matches 集合得到Q在VBScript 中?SubMatches 集合Q在Visual Basic Scripting Edition 中则使用 $0?9 属性。要匚w圆括号字W,请?'\(' ?'\)'?
(?:pattern)
匚w pattern 但不获取匚wl果Q也是说这是一个非获取匚wQ不q行存储供以后用。这在?"? 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 是一个比 'industry|industries' 更简略的表达式?
(?=pattern)
正向预查Q在M匚w pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_(d)该匹配不需要获取供以后使用。例如, 'Windows (?=95|98|NT|2000)' 能匹?"Windows 2000" 中的 "Windows" Q但不能匚w "Windows 3.1" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦(ch)Q而不是从包含预查的字W之后开始?
(?!pattern)
负向预查Q在M不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字W串开始处匚w查找字符丌Ӏ这是一个非获取匚wQ也是_(d)该匹配不需要获取供以后使用。例?Windows (?!95|98|NT|2000)' 能匹?"Windows 3.1" 中的 "Windows"Q但不能匚w "Windows 2000" 中的 "Windows"。预查不消耗字W,也就是说Q在一个匹配发生后Q在最后一ơ匹配之后立卛_始下一ơ匹配的搜烦(ch)Q而不是从包含预查的字W之后开?
x|y
匚w x ?y。例如,'z|food' 能匹?"z" ?"food"?(z|f)ood' 则匹?"zood" ?"food"?
[xyz]
字符集合。匹配所包含的Q意一个字W。例如, '[abc]' 可以匚w "plain" 中的 'a'?
[^xyz]
负值字W集合。匹配未包含的Q意字W。例如, '[^abc]' 可以匚w "plain" 中的'p'?
[a-z]
字符范围。匹配指定范围内的Q意字W。例如,'[a-z]' 可以匚w 'a' ?'z' 范围内的L写字母字符?
[^a-z]
负值字W范围。匹配Q何不在指定范围内的Q意字W。例如,'[^a-z]' 可以匚wM不在 'a' ?'z' 范围内的L字符?
\b
匚w一个单词边界,也就是指单词和空格间的位|。例如, 'er\b' 可以匚w"never" 中的 'er'Q但不能匚w "verb" 中的 'er'?
\B
匚w非单词边界?er\B' 能匹?"verb" 中的 'er'Q但不能匚w "never" 中的 'er'?
\cx
匚w由x指明的控制字W。例如, \cM 匚w一?Control-M 或回车符?x 的值必Mؓ(f) A-Z ?a-z 之一。否则,?c 视ؓ(f)一个原义的 'c' 字符?
\d
匚w一个数字字W。等价于 [0-9]?
\D
匚w一个非数字字符。等价于 [^0-9]?
\f
匚w一个换늬。等价于 \x0c ?\cL?
\n
匚w一个换行符。等价于 \x0a ?\cJ?
\r
匚w一个回车符。等价于 \x0d ?\cM?
\s
匚wMI白字符Q包括空根{制表符、换늬{等。等价于 [ \f\n\r\t\v]?
\S
匚wM非空白字W。等价于 [^ \f\n\r\t\v]?
\t
匚w一个制表符。等价于 \x09 ?\cI?
\v
匚w一个垂直制表符。等价于 \x0b ?\cK?
\w
匚w包括下划U的M单词字符。等价于'[A-Za-z0-9_]'?
\W
匚wM非单词字W。等价于 '[^A-Za-z0-9_]'?
\xn
匚w nQ其?n 为十六进制{义倹{十六进制{义值必Mؓ(f)定的两个数字长。例如, '\x41' 匚w "A"?\x041' 则等价于 '\x04' & "1"。正则表辑ּ中可以?ASCII ~码?
\num
匚w numQ其?num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匚w两个q箋的相同字W?
\n
标识一个八q制转义值或一个后向引用。如?\n 之前臛_ n 个获取的子表辑ּQ则 n 为后向引用。否则,如果 n 为八q制数字 (0-7)Q则 n Z个八q制转义倹{?
\nm
标识一个八q制转义值或一个后向引用。如?\nm 之前臛_有is preceded by at least nm 个获取得子表辑ּQ则 nm 为后向引用。如?\nm 之前臛_?n 个获取,?n Z个后跟文?m 的后向引用。如果前面的条g都不满Q若 n ?m 均ؓ(f)八进制数?(0-7)Q则 \nm 匹配八q制转义?nm?
\nml
如果 n 为八q制数字 (0-3)Q且 m ?l 均ؓ(f)八进制数?(0-7)Q则匚w八进制{义?nml?
\un
匚w nQ其?n 是一个用四个十六q制数字表示?Unicode 字符。例如, \u00A9 匚w版权W号 (?)?