基础语法
字符匹配
| 语法 | 说明 | 示例 |
|---|
. | 匹配任意字符(除换行) | a.c → abc, a1c |
\d | 匹配数字 [0-9] | \d+ → 123 |
\w | 匹配单词字符 [a-zA-Z0-9_] | \w+ → hello_123 |
\s | 匹配空白字符 | a\sb → a b |
\D | 匹配非数字 | \D+ → abc |
\W | 匹配非单词字符 | \W → @, # |
量词
| 语法 | 说明 |
|---|
* | 0 次或多次 |
+ | 1 次或多次 |
? | 0 次或 1 次 |
{n} | 恰好 n 次 |
{n,} | 至少 n 次 |
{n,m} | n 到 m 次 |
位置锚点
| 语法 | 说明 |
|---|
^ | 字符串开头 |
$ | 字符串结尾 |
\b | 单词边界 |
\B | 非单词边界 |
分组与捕获
(abc) 捕获分组
(?:abc) 非捕获分组
(?<name>abc) 命名分组
\1 反向引用
常用正则表达式
邮箱验证
^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,}$
中国手机号
^1[3-9]\d{9}$
URL 匹配
https?:\/\/[\w\-._~:/?#\[\]@!$&'()*+,;=]+
日期格式 (YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
十六进制颜色
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
IPv4 地址
^(\d{1,3}\.){3}\d{1,3}$
JavaScript 中使用正则
// 测试匹配
const regex = /\d+/g;
const str = "abc 123 def 456";
console.log(str.match(regex)); // ["123", "456"]
// 替换
const result = str.replace(/\d+/g, "***");
// "abc *** def ***"
// 命名分组
const dateRegex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const match = "2025-03-01".match(dateRegex);
console.log(match?.groups); // { year: "2025", month: "03", day: "01" }
标志位
| 标志 | 说明 |
|---|
g | 全局匹配 |
i | 忽略大小写 |
m | 多行模式 |
s | 让 . 匹配换行 |
u | Unicode 模式 |
试试我们的正则表达式测试器来验证你的正则表达式!