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