正则表达式

输入正则表达式与测试文本,实时查看匹配数量、位置、捕获组;支持替换模式,可用 $1 $2 引用捕获组。

//g

输入正则表达式,实时查看匹配结果与捕获组

📖 常用正则速查

邮箱[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}
手机号1[3-9]\d{9}
URLhttps?://[\w\-]+(\.[\w\-]+)+(/[\w\-._~:/?#\[\]@!$&'()*+,;=%]*)?
中文字符[\u4e00-\u9fa5]+
IP 地址((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)
日期\d{4}[-/](0?[1-9]|1[0-2])[-/](0?[1-9]|[12]\d|3[01])
HTML 标签<([a-zA-Z][a-zA-Z0-9]*)\b[^>]*>(.*?)</\1>
十六进制色#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\b

❓ 常见问题

正则表达式的 g、i、m、s、u 标志分别是什么意思?

g(global)全局匹配,找出所有匹配而非第一个;i(ignoreCase)忽略大小写;m(multiline)多行模式,^ 和 $ 匹配每行首尾;s(dotAll)让 . 也能匹配换行符;u(Unicode)启用完整 Unicode 支持,正确处理 emoji 和四字节字符。

如何用正则提取捕获组内容?

用圆括号 () 定义捕获组,如 (\d{4})-(\d{2})-(\d{2}) 可提取日期的年月日。本工具会在匹配详情中显示 $1、$2 等捕获组的值。命名捕获组语法为 (?<name>...),结果中会显示对应名称。

替换模式中 $1 $2 怎么用?

在替换字符串中,$1 引用第一个捕获组,$2 引用第二个,以此类推。例如正则 (\w+)@(\w+),替换为 $2/$1,可将 user@domain 变为 domain/user。命名捕获组用 $<name> 引用。

为什么我的正则在这里能匹配,但在代码里不行?

常见原因:1)字符串字面量中反斜杠需要双写,如代码里写 \\d 才等于正则的 \d;2)忘记加 g 标志导致只匹配第一个;3)多行文本需要 m 标志让 ^ $ 匹配行首尾;4)含 emoji 的字符串需要 u 标志。