正则表达式是用于匹配字符串中字符组合的模式。

使用简单的模式

简单模式是由你周到的直接匹配所构成的。

使用特殊字符

当你需要搜索一个比直接匹配需要更多条件的匹配时,比如寻找一个或多个 ‘b’,或者寻找空格,那么这时模式将要包含特殊字符。

特殊字符

  1. \ 在非特殊字符前,表示下一个字符时特殊的;在特殊字符前,可以其之后的特殊字符转义为字面量(转义字符)。
  2. ^ 匹配输入的开始,如果多行标志被设置为true, 那么也匹配换行符后紧跟的位置。
  3. 如: /^A/ 匹配 An E 中的 A, 不会匹配 an A 中的 A
  4. $ 匹配输入的结束,如果多行标志被设置为 true, 那么也匹配换行符前的位置。
  5. 如: /t$/ 会匹配 eat 中的 t, 但不会匹配 'eater' 中的 t.
  6. * 匹配前一个表达式次或多次,等价于 {0,}
  7. + 匹配前一个表达式1次或多次,等价于 {1, }
  8. ? 匹配前一个表达式0次或1次,等价于 {0, 1}
  9. 如果紧跟在任何两次 *、+、?或 {} 后,将会时量词变成非贪婪模式(匹配尽量少的字符),和缺省
  10. 使用的贪婪模式。
  11. . 匹配除换行符之外的任何单个字符。如 /.n/将匹配 "nay, an apple is on the tree" 中的 an
  12. on’,但不会匹配 nay’.
  13. (x)
  14. (?:x)
  15. x(?=y) 匹配x仅仅当x 后面跟着 y,这种叫做正向可定查找。
  16. x(?!y) 匹配x 仅仅当x 后面不跟着y,这个叫做正向否定查找
  17. x|y 匹配x y
  18. {n} n是一个正整数,匹配了前面一个字符刚好发生了n
  19. {n, m} n m 都是整数,匹配前面的字符至少 n次,最多 m 次。如果 n m 的值是0,这个值被忽略。
  20. /a{1, 3}/ 不匹配 cndy 中的任意字符,匹配 candy 中的a, 匹配 caandy 中前两个 a, 也匹
  21. caaaaandy 中前三个aaaa
  22. [xyz] 一个字符集合。匹配方括号中的任意字符,包括转义字符。可用 - 来指定一个字符的范围。
  23. 对于 . * 这样的特殊符号在一个字符集中没有特殊的意义,它们不必转义,不过转义也起作用。
  24. 如: [abcd] [a-d] 一样,都匹配 brisket 中的 b city 中的 c.
  25. [^xyz] 一个反向字符集。它匹配任何没有包含在方括号中的字符。任何普通字符在这里都是起作用的。
  26. [\b] 匹配一个退格(U+0008); 不要和 \b 混淆了.
  27. \b 匹配一个次的边界(即 一个词的前面或后面没有其它字符)。
  28. /\bm/ 匹配 moon 中的 m
  29. /oo\b/ 不匹配 'moon' 中的 oo
  30. /oon\b/ 匹配 'moon' 中的 oon.
  31. \B 匹配一个非单词边界,他匹配一个前后字符都是相同类型的位置。
  32. 如: /\B../ 匹匹厄 noonday 中的 oo , /y\B../ 匹配 'possibly yesterday'中的 'yes'
  33. \cX X是处于AZ之间的字符时,匹配字符串中的一个控制符。
  34. \d 匹配一个数字。 等价于 [0-9]
  35. \D 匹配一个非数字字符。 等价于[^0-9]. B2 is the suite number 中的 B
  36. \f 匹配一个换页符
  37. \n 匹配一个换行符
  38. \r 匹配一个回车符
  39. \s 匹配一个空白符,包括空格、制表符、换页符和换行符。
  40. \S 匹配一个非空白符
  41. \t 匹配一个水平制表符
  42. \V 匹配一个垂直制表符
  43. \w 匹配一个单字字符(字母、数字或下划线)
  44. 等价于[A-Za-z0-9_] 如: /\w/ 匹配 apple 中的 a, $5.28 中的 5 3D 中的 3.