Regular Expression 正则表达式

Regular Expression(正则表达式) 简称Regex
在Javascript中
g(global)表示全局 i表示不区分大小写
.可以匹配任何一个单位的字符
[]用于定义字符集合 ^取非

元字符

元字符 解释说明
[\b] Backspace键(退格)
\n 换行符
\f 换页符
\r 回车符
\t 制表符(tab)
\v 垂直制表符
\r\n 回车+换行 许多操作系统以此为行结束,Unix与Linux以\n作为行结束
\d 任何一个数字字符 [0-9]
\D 任何一个非数字字符 0-9
\w [a-zA-Z0-9_]
\W a-zA-Z0-9_
\s [\f\n\r\t\v] 任一一个空白字符
\S \f\n\r\t\v 任一一个非空白字符
\xXX XX:表示十六进制数
\0XX XX:表示八进制数

POSIX字符类 javascript不支持

POSIX字符类 解释说明
[:alnum:] [\w^_]
[:upper:] [A-Z]
[:alpha:] [a-zA-Z]
[:blank:] [ \t] 注意:这里包含空格
[:xdigit:] 任何一个十六进制数 [a-fA-F0-9]
[:cntrl:] ASCII控制字符 0-31加上127
[:digit:] \d
[:graph:] [:print:]去除空格
[:lower:] [a-z]
[:print:] 任何一个可打印字符
[:punct:] 既不属于[:alnum:]也不属于[:cntrl:]的字符
[:space:] [\f\r\n\t\v ] 注意:这里包含空格
符号 解释说明
+ 一次或多次重复
+? 懒惰型
* 零次或多次重复
*? 懒惰型
? 零次或一次出现
{n} 重复n次
{m,n} 至少m次,至多n次
{m,} 至少出现m次
{m,}? 懒惰型
\b 一个单词的开头或结尾 b:boundary
\B 不匹配一个单词边界
^ 字符串开头 $ 字符串结尾
(?m) 置于开头,用于开启分行匹配模式 multline mode 注意:有的语言不支持
(xx) 子表达式,视为独立元素

回溯引用 backreference

替换模式下Javascript使用$代替\

符号 解释说明
\1,\2……\n 第1个表达式,第2个表达式…….第n个表达式
\0 代表整个正则表达式
\E 结束 \L或\U转换
\l 把下一个字符转换为小写
\L 把\L到\E之间全部转换为小写
\u 把下一个字符转换为大写
\U 把\U到\E之间全部转换为大写

注意:
1、 Java、Perl、PHP、.NET 支持向后查找
2、 Javascript、ColdFusion 不支持向后查找
向前查找:(?=x) 匹配但不消费x,即结果不包括x
例 (?=:) 原字符串 https: 匹配结果 http
向后查找:(?<=x) 匹配但不消费x,即结果不包括x
例 (?<=$) 原字符串 $400 匹配结果 400
注意:向前查找可以任意长度(可以使用.+) 向后查找的长度是固定的
(?=) 正向前查找 (?<=) 正向后查找
(?!) 负向前查找 (?<!) 负向后查找

Mysql JAVA1.4不支持条件处理
(?(backreference)true-regex)
(?(backreference)true-regex|false-regex)
Backreference满足时,匹配true-regex 否则匹配false-regex