1. 基本概念

  1. 字符匹配

  • .: 匹配任意单个字符(除了换行符)。

  • \d: 匹配数字,等价于 [0-9]

  • \D: 匹配非数字,等价于 [^0-9]

  • \w: 匹配字母、数字或下划线,等价于 [a-zA-Z0-9_]

  • \W: 匹配非字母数字或下划线,等价于 [^a-zA-Z0-9_]

  • \s: 匹配任何空白字符(如空格、制表符、换行符)。

  • \S: 匹配任何非空白字符。

  1. 量词

  • *: 匹配前面的元素零次或多次。

  • +: 匹配前面的元素一次或多次。

  • ?: 匹配前面的元素零次或一次。

  • {n}: 匹配前面的元素恰好 n 次。

  • {n,}: 匹配前面的元素至少 n 次。

  • {n,m}: 匹配前面的元素至少 n 次,但不超过 m 次。

  1. 位置和边界

  • ^: 匹配输入字符串的开始位置。

  • $: 匹配输入字符串的结束位置。

  • \b: 匹配一个单词边界(word boundary)。

  • \B: 匹配非单词边界。

  1. 分组与选择

  • (...): 分组,用来提取特定的子字符串。

  • |: 或运算符,匹配左右任意一个表达式。

  1. 转义字符

  • \: 用于转义特殊字符,例如 \., \*, \+ 等。

2. 样例

  1. 邮箱地址

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
  1. 电话号码(中国)

1[3456789]\d{9}
  1. 日期(YYYY-MM-DD)

\d{4}-\d{2}-\d{2}
  1. 提取 HTML 标签中的内容

<(\w+)>(.*?)<\/\1>