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