[]可以定义一个字符集合,字符集合的匹配结果能够与该集合里的任意一个成员相匹配的文本
字符区间可以使用 - 连字符来定义
A-Z 匹配从A到Z的所有大写字母
a-z 匹配从a到z的所有小写字母
A-F 匹配从A到F的所有大写字母
A-z 匹配从ASCII字符A到ASCII字符z的所有字母。这个模式一般不常用,因为它还包含着[和^等在ASCII字符表里排列在Z和a之间的字符
字符区间的首,尾字符可以是ASCII字符表里的任意字符。但在实际中,最常用的字符区间还是数字字符区间和字母字符区间
注:-只能在[]间出现,出现在[]外面,相等于匹配-
^取非匹配,作用于给定字符集合里的所有字符活字符区间,而不是紧跟着^后面的那一个字符或字符区间
元字符不转义,是匹配不到等于它本身的字符串的 [] . \ h
空白元字符
[\b] 回退并删除一个字符(backspace)
\f 换页符
\n 换行符
\r 回车符
\t 制表符tab键
\v 垂直制表符
\r\n是windows使用的文本行结束标签。系统只使用一个换行符来结束一个文本行。在unix/linuxi同上匹配空白行只使用\n\n即可,不需要加上\r。同时适用于windows和unix/linux系统的正则表达式应该包含一个可选的\r和一个必须被匹配的\n
需要匹配的----\r\n\t比较常见
\d 匹配任何一个数字字符
\D 匹配任何一个非数字字符
\w 匹配任何一个字母数字字符(大小写)或者下划线字符=[0-9a-zA-Z_]
\W 匹配任何一个非字母数字或非下划线字符=[^0-9a-zA-Z_]
\s 匹配任何一个空白字符=[\f\r\n\t\v]
\S 匹配任何一个非空白字符=[^\f\n\r\t\v]
匹配十六进制:\x0A对应ASCII字符10=\n
匹配八进制:\011对应ASCII字符9=\t
有的正则表达式还允许使用\c前缀,来制定各种控制字符。比如\cZ将匹配Ctrl-Z
有的正则表达式还支持POSIX字符类,javascript不支持
[:alnum:] 任何一个字母或数字
[:alpha:] 任何一个字母
[:blank:] 空格制表符
[:cntrl:] ASCII控制字符
[:digit:] 任何一个数字 …………
匹配字符
+ 匹配一个或多个字符
* 匹配零个或者多个,可有可无,可多可少
? 陪陪零个或者一个字符 举例:http与https
{可以设定匹配字符的次数}
格式:
{3} 匹配三次
{4,8} 匹配最少4次,最多8次
{3,} 匹配重复最少3次
如果需要匹配/这个字符,最好还是加上\/,转义字符
* + 为贪婪性元字符,在进行匹配时,行为模式是多多益善而不是适可而止的,会尽可能的从一段文本的开头一直匹配到文本的末尾,而不是从这段文本的开头匹配到碰到的第一个匹配是为止。
懒惰型字符相反。
贪婪型字符 懒惰型字符
* *?
+ +?
{n,} {n,}?
\w相匹配的字符是单词边界,\W相匹配的是非单词边界
\b单词边界字符,例如:至匹配 at 而不匹配 what,可以使用 --\bat\b
\B匹配一个前后都不是单词边界的连字符(-),nine-digit不能匹配,color - coded的连字符(-)可以匹配
^.*$ 匹配字符串的开头与结尾
(?m)匹配行分隔符,将换行符当作一个字符串分隔符