正则表达式是用于匹配字符串中字符组合的模式。
使用简单的模式
简单模式是由你周到的直接匹配所构成的。
使用特殊字符
当你需要搜索一个比直接匹配需要更多条件的匹配时,比如寻找一个或多个 ‘b’,或者寻找空格,那么这时模式将要包含特殊字符。
特殊字符
\ 在非特殊字符前,表示下一个字符时特殊的;在特殊字符前,可以其之后的特殊字符转义为字面量(转义字符)。
^ 匹配输入的开始,如果多行标志被设置为true, 那么也匹配换行符后紧跟的位置。
如: /^A/ 匹配 ‘An E’ 中的 A, 不会匹配 ‘an A’ 中的 A。
$ 匹配输入的结束,如果多行标志被设置为 true, 那么也匹配换行符前的位置。
如: /t$/ 会匹配 ‘eat’ 中的 t, 但不会匹配 'eater' 中的 t.
* 匹配前一个表达式次或多次,等价于 {0,}
+ 匹配前一个表达式1次或多次,等价于 {1, }
? 匹配前一个表达式0次或1次,等价于 {0, 1}
如果紧跟在任何两次 *、+、?或 {} 后,将会时量词变成非贪婪模式(匹配尽量少的字符),和缺省
使用的贪婪模式。
. 匹配除换行符之外的任何单个字符。如 /.n/将匹配 "nay, an apple is on the tree" 中的 ‘an’
和 ‘on’,但不会匹配 ‘nay’.
(x)
(?:x)
x(?=y) 匹配x仅仅当x 后面跟着 y,这种叫做正向可定查找。
x(?!y) 匹配x 仅仅当x 后面不跟着y,这个叫做正向否定查找
x|y 匹配x 或 y
{n} n是一个正整数,匹配了前面一个字符刚好发生了n次
{n, m} n 和 m 都是整数,匹配前面的字符至少 n次,最多 m 次。如果 n 或 m 的值是0,这个值被忽略。
/a{1, 3}/ 不匹配 cndy 中的任意字符,匹配 candy 中的a, 匹配 caandy 中前两个 a, 也匹
配 caaaaandy 中前三个a(aaa)
[xyz] 一个字符集合。匹配方括号中的任意字符,包括转义字符。可用 - 来指定一个字符的范围。
对于 . 和 * 这样的特殊符号在一个字符集中没有特殊的意义,它们不必转义,不过转义也起作用。
如: [abcd] 和 [a-d] 一样,都匹配 brisket 中的 b 和 city 中的 c.
[^xyz] 一个反向字符集。它匹配任何没有包含在方括号中的字符。任何普通字符在这里都是起作用的。
[\b] 匹配一个退格(U+0008); 不要和 \b 混淆了.
\b 匹配一个次的边界(即 一个词的前面或后面没有其它字符)。
/\bm/ 匹配 ‘moon’ 中的 m
/oo\b/ 不匹配 'moon' 中的 oo
/oon\b/ 匹配 'moon' 中的 oon.
\B 匹配一个非单词边界,他匹配一个前后字符都是相同类型的位置。
如: /\B../ 匹匹厄 noonday 中的 oo , 而 /y\B../ 匹配 'possibly yesterday'中的 'yes'
\cX 当X是处于A到Z之间的字符时,匹配字符串中的一个控制符。
\d 匹配一个数字。 等价于 [0-9]
\D 匹配一个非数字字符。 等价于[^0-9]. 如 “B2 is the suite number” 中的 B
\f 匹配一个换页符
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配一个空白符,包括空格、制表符、换页符和换行符。
\S 匹配一个非空白符
\t 匹配一个水平制表符
\V 匹配一个垂直制表符
\w 匹配一个单字字符(字母、数字或下划线)
等价于[A-Za-z0-9_] 如: /\w/ 匹配 apple 中的 a, $5.28 中的 5 和 3D 中的 3.