当前位置:首页 > 正则表达式基础
[a-z] 字符范围。匹配指定范围内的仸意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的仸意小写字母字符。
[^a-z] 负值字符范围。匹配仸何不在指定范围内的仸意字符。例如,'[^a-z]' 可以匹配仸何不在 'a' 到 'z' 范围内的仸意字符。
¥b 匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er¥b' 可以匹配\中的 'er',但不能匹配 \中的 'er'。
¥B 匹配非单词边界。'er¥B' 能匹配 \中的 'er',但不能匹配 \中的 'er'。
¥cx 匹配由 x 指明的控制字符。例如, ¥cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。 ¥d 匹配一个数字字符。等价于 [0-9]。 ¥D 匹配一个非数字字符。等价于 [^0-9]。 ¥f 匹配一个换页符。等价于 ¥x0c 和 ¥cL。 ¥n 匹配一个换行符。等价于 ¥x0a 和 ¥cJ。 ¥r 匹配一个回车符。等价于 ¥x0d 和 ¥cM。
¥s 匹配仸何空白字符,包括空格、制表符、换页符等等。等价于 [ ¥f¥n¥r¥t¥v]。 ¥S 匹配仸何非空白字符。等价于 [^ ¥f¥n¥r¥t¥v]。 ¥t 匹配一个制表符。等价于 ¥x09 和 ¥cI。 ¥v 匹配一个垂直制表符。等价于 ¥x0b 和 ¥cK。
¥w 匹配包括下划线的仸何单词字符。等价于'[A-Za-z0-9_]'。 ¥W 匹配仸何非单词字符。等价于 '[^A-Za-z0-9_]'。
¥xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'¥x41' 匹配 \。'¥x041' 则等价于 '¥x04' & \。正则表达式中可以使用 ASCII 编码。.
¥num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)¥1' 匹配两个连续的相同字符。
¥n 标识一个八进制转义值或一个向后引用。如果 ¥n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
¥nm 标识一个八进制转义值或一个向后引用。如果 ¥nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 ¥nm 之前至少有 n 个获取, 则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 ¥nm 将匹配八进制转义值 nm。
¥nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。 ¥un 匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, ¥u00A9 匹配版权符号 (?)。 6. 部分例子
正则表达式 说明
/¥b([a-z]+) ¥1¥b/gi 一个单词连续出现的位置
/(¥w+):¥/¥/([^/:]+)(:¥d*)?([^# ]*)/ 将一个URL解析为协议、域、端口及相对路径 /^(?:Chapter|Section) [1-9][0-9]{0,1}$/ 定位章节的位置 /[-a-z]/ A至z共26个字母再加一个-号。 /ter¥b/ 可匹配chapter,而不能terminal /¥Bapt/ 可匹配chapter,而不能aptitude
/Windows(?=95 |98 |NT )/ 可匹配Windows95或Windows98或WindowsNT,当找到一个匹配后,从Windows后面开始进行下一次的检索匹配。 7. 正则表达式匹配规则
7.1 基本模式匹配
一切从最基本的开始。模式,是正规表达式最基本的元素,它们是一组描述字符串特征的字符。模式可以很
简单,由普通的字符串组成,也可以非常复杂,往往用特殊的字符表示一个范围内的字符、重复出现,或表示上下文。例如:
^once
这个模式包含一个特殊的字符^,表示该模式只匹配那些以once开头的字符串。例如该模式与字符串\nce upon a time\匹配,与 \不匹配。正如如^符号表示开头一样,$符号用来匹配那些以给定模式结尾的字符 串。
bucket$
这个模式与\匹配,与\不匹配。字符^和$同时使用时,表示精确匹配(字符串与模式一样)。例如:
^bucket$
只匹配字符串\。如果一个模式不包括^和$,那么它与仸何包含该模式的字符串匹配。例如:模式
once
与字符串
There once was a man from NewYork Who kept all of his cash in a bucket.
是匹配的。
在该模式中的字母(o-n-c-e)是字面的字符,也就是说,他们表示该字母本身,数字也是一样的。其他一些稍微复杂的字符,如标点符号和白字符(空 格、制表符等),要用到转义序列。所有的转义序列都用反斜杠(¥)打头。制表符的转义序列是:¥t。所以如果我们要检测一个字符串是否以制表符开头,可以 用这个模式: ^¥t
类似的,用¥n表示“新行”,¥r表示回车。其他的特殊符号,可以用在前面加上反斜杠,如反斜杠本身用¥¥表示,句号.用¥.表示,以此类推。
7.2 字符簇
在INTERNET的程序中,正规表达式通常用来验证用户的输入。当用户提交一个FORM以后,要判断输入的电话号码、地址、EMAIL地址、信用卡号码等是否有效,用普通的基于字面的字符是不够的。
所以要用一种更自由的描述我们要的模式的办法,它就是字符簇。要建立一个表示所有元音字符的字符簇,就把所有的元音字符放在一个方括号里:
[AaEeIiOoUu]
这个模式与仸何元音字符匹配,但只能表示一个字符。用连字号可以表示一个字符的范围,如:
共分享92篇相关文档