基础语法

字符匹配

语法说明示例
.匹配任意字符(除换行)a.cabc, a1c
\d匹配数字 [0-9]\d+123
\w匹配单词字符 [a-zA-Z0-9_]\w+hello_123
\s匹配空白字符a\sba 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. 匹配换行
uUnicode 模式

试试我们的正则表达式测试器来验证你的正则表达式!