需要指出的是,这里只是总结了正则表达式的常用的且比较简单的语法,而不是全部语法,在我看来,掌握了这些常用语法,已经足够应对日常应用了。正则表达式不只是应用在ECMAScript中,在JAVA、.Net、Unix等也有相应应用,这篇文章则是以ECMAScript中的正则表达式为基础总结的。
一、正则表达式基础
1、普通字符:字母、数字、下划线、汉字以及所有没有特殊意义的字符,如ABC123。在匹配时,匹配与之相同的字符。
2、特殊字符:(需要时,使用反斜杠“\”进行转义)
字符 含义 字符 含义 字符 含义 字符 含义\a 响铃符 = \x07 ^ 匹配字符串的开始位置 \b 匹配单词的开始或结束 {n} 匹配n次
\f 换页符 = \x0C $ 匹配字符串的结束位置 \B 匹配不是单词开始和结束的位置 {n,} 匹配至少n次
\n 换行符 = \x0A () 标记一个子表达式的开始和结束 \d 匹配数字 {n,m} 匹配n到m次
\r 回车符 = \x0D [] 自定义字符组合匹配 \D 匹配任意不是数字的字符 [0-9] 匹配0到9中任意一个数字
\t 制表符 = \x09 {} 修饰匹配次数的符号 \s 匹配任意空白字符 [f-m] 匹配f到m中任意一个字母
\v 垂直制表符 = \x0B . 匹配除换行符外的字符 \S 匹配任意非空白字符
\e ESC符 = \x1B ? 匹配0或1次 \w 匹配字母或数字或下划线或汉字
\xXX 使用两位十六进制表示形式,可与该编号的字符匹配 + 匹配1或多次 \W 匹配任意不是字母、数字、下划线和汉字的字符
\uXXXX 用四位十六进制表示形式,可与该编号的字符匹配 * 匹配0或多次 [^x] 匹配除x外的所有字符
\x{XXXXXX} 使用任意位十六进制表示形式,可与该编号的字符匹配 | 左右两边表达式之间“或”关系 [^aeiou] 匹配除aeiou外的所有字符
上面列举的这些特殊字符,可以大致的分为:
(1)不便书写字符:如响铃符(\a)、换页符(\f)、换行符(\n)、回车符(\r)、制表符(\t)、ESC符(\e)
(2)十六进制字符:如两位(\x02)、四位(\x012B)、任意位(\x{A34D1})
(3)表示位置字符:如字符串开始(^)、字符串结束($)、单词开始和结束(\b)、单词中间(\B)
(4)表示次数字符:如0或1次(?)、1或多次(+)、0或多次(*)、n次({n})、至少n次({n,})、n到m次({n,m})
(5)修饰字符:如修饰次数({})、自定义组合匹配([])、子表达式(())
(6)反义字符:
(A)通过大小写反义:如\b和\B、\d和\D、\s和\S、\w和\W
(B)通过[^]反义:如[^x]、[^aeiou]
(C)其它特例:如\n和.也构成反义
(7)范围字符:如数字范围([0-9])、字母范围([f-m])
(8)逻辑字符:如表示或(|)
3、转义
(1)使用反斜杠“\”转义单个字符
(2)使用“\Q...\E”转义,将表达式中间出现的字符全部作为普通字符
(3)使用“\U...\E”转义,将表达式中间出现的字符全部作为普通字符,并且将小写字母转换成大写匹配
(4)使用“\L...\E”转义,将表达式中间出现的字符全部作为普通字符,并且将大写字母转换为小写匹配
4、贪婪模式与懒惰模式