正则表达式测试

在线测试正则表达式匹配结果

正则表达式测试
/ /
Flags: g(全局) i(忽略大小写) m(多行) s(dotAll) u(unicode) y(sticky)
字符类
语法说明示例匹配
.匹配除换行符外的任意单个字符a.cabc、a1c、a_c
\d匹配数字,等价于 [0-9]\d{3}123、456
\D匹配非数字,等价于 [^0-9]\D+abc、你好
\w匹配字母、数字、下划线,等价于 [a-zA-Z0-9_]\w+hello、user_1
\W匹配非单词字符\W+空格、标点
\s匹配空白字符(空格、Tab、换行等)a\sba b
\S匹配非空白字符\S+hello、123
[abc]字符集,匹配括号内任意一个字符[aeiou]a、e、i、o、u
[^abc]排除字符集,匹配不在括号内的字符[^0-9]字母、符号
[a-z]字符范围,匹配 a 到 z 之间的字符[a-zA-Z]任意英文字母
量词
语法说明示例匹配
*匹配前面的元素零次或多次(贪婪)ab*cac、abc、abbc
+匹配前面的元素一次或多次(贪婪)ab+cabc、abbc(不匹配 ac)
?匹配前面的元素零次或一次colou?rcolor、colour
{n}恰好匹配 n 次\d{4}2024、1234
{n,}至少匹配 n 次\d{3,}123、12345
{n,m}匹配 n 到 m 次\d{2,4}12、123、1234
*?非贪婪匹配(尽可能少匹配)<.+?>匹配最短的 HTML 标签
+?非贪婪的一次或多次\d+?尽可能少的数字
锚点与边界
语法说明示例匹配
^匹配字符串(或行)的开头;m 模式下匹配每行开头^Hello以 Hello 开头的字符串
$匹配字符串(或行)的结尾;m 模式下匹配每行结尾world$以 world 结尾的字符串
\b单词边界,匹配单词与非单词字符之间的位置\bcat\bcat(不匹配 catch 中的 cat)
\B非单词边界\Bcat\Bconcatenate 中间的 cat
分组与引用
语法说明示例说明
(abc)捕获组,将括号内内容作为整体,并记录匹配结果(ab)+匹配 ab、abab、ababab
(?:abc)非捕获组,分组但不记录匹配结果,性能更好(?:ab)+同上,但不捕获
(?<name>abc)命名捕获组,通过名称引用捕获结果(?<year>\d{4})捕获年份并命名为 year
\1\2反向引用,引用第 n 个捕获组的内容(\w+)\s\1匹配重复单词,如 "the the"
a|b或运算,匹配 a 或 bcat|dogcat 或 dog
预查(零宽断言)
语法说明示例匹配
(?=abc)正向先行断言:后面必须跟着 abc(不消耗字符)\d+(?=px)匹配 12px 中的 12
(?!abc)负向先行断言:后面不能跟着 abc\d+(?!px)匹配不跟 px 的数字
(?<=abc)正向后行断言:前面必须是 abc(ES2018+)(?<=\$)\d+匹配 $100 中的 100
(?<!abc)负向后行断言:前面不能是 abc(ES2018+)(?<!\$)\d+匹配不跟在 $ 后的数字
修饰符(Flags)
标志说明示例
g全局匹配,找到所有匹配项(不加则只匹配第一个)/\d+/g 匹配所有数字
i忽略大小写/hello/i 匹配 Hello、HELLO
m多行模式,^$ 匹配每行的开头和结尾/^\d/m 匹配每行开头的数字
sdotAll 模式,. 可匹配换行符(ES2018+)/a.b/s 匹配跨行的 a 和 b
uUnicode 模式,正确处理 Unicode 字符(如 emoji)/\p{L}/u 匹配任意字母
y粘性匹配(sticky),从 lastIndex 位置开始匹配/\d+/y
gi组合使用:全局 + 忽略大小写/hello/gi
转义字符
语法说明
\.\*\+转义特殊字符,使其作为字面量匹配(需转义的字符:. * + ? ^ $ { } [ ] | ( ) \
\n换行符
\t制表符(Tab)
\r回车符
\uXXXXUnicode 字符,如 \u4e2d 匹配"中"
常用正则速查
场景正则表达式说明
非空字符串^.+$至少包含一个非换行字符
纯数字^\d+$整行全为数字
正整数^[1-9]\d*$不含 0 开头
浮点数^-?\d+(\.\d+)?$可选负号和小数部分
字母数字^[a-zA-Z0-9]+$仅含字母和数字
去除首尾空格^\s+|\s+$配合 replace 使用
重复单词\b(\w+)\s+\1\b利用反向引用检测重复
提取括号内容\(([^)]+)\)捕获组获取括号内文本
常用正则表达式
说明 正则表达式 操作
邮箱地址 ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
手机号码(中国) ^1[3-9]\d{9}$
URL 网址 ^https?:\/\/.+
IPv4 地址 ^(\d{1,3}\.){3}\d{1,3}$
日期(YYYY-MM-DD) ^\d{4}-\d{2}-\d{2}$
身份证号(18位) ^\d{17}[\dXx]$
IPv6 地址 ^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$
MAC 地址 ^([0-9A-Fa-f]{2}[:-]){5}[0-9A-Fa-f]{2}$
时间(HH:MM:SS) ^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$
整数 ^-?\d+$
浮点数 ^-?\d+(\.\d+)?$
正整数 ^[1-9]\d*$
中文字符 [\u4e00-\u9fa5]
用户名(字母/数字/下划线,4-16位) ^\w{4,16}$
强密码(含大小写字母、数字、特殊字符,8位以上) ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$
邮政编码(中国) ^[1-9]\d{5}$
座机号码(中国) ^(\d{3,4}-?)?\d{7,8}$
十六进制颜色值 ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
图片文件名 \.(jpg|jpeg|png|gif|webp|svg)$
版本号(SemVer) ^\d+\.\d+\.\d+$
UUID / GUID ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
Base64 字符串 ^[A-Za-z0-9+/]+={0,2}$
JWT Token ^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$
SQL 注入检测(常见关键词) (\b(SELECT|INSERT|UPDATE|DELETE|DROP|UNION|EXEC)\b)
空行 ^\s*$
连续重复单词 \b(\w+)\s+\1\b
关于正则表达式测试
  • 在线测试正则表达式匹配效果,支持实时高亮显示所有匹配项及捕获组详情
  • 内置 25+ 常用正则模式(邮箱、手机号、URL、身份证、UUID 等),一键填入即可使用
  • 使用 JavaScript 正则引擎,支持 g、i、m、s、u、y 等全部修饰符
操作说明
  • 在「正则表达式」输入框中输入正则,在 flags 框中填写修饰符(默认 g 全局匹配)
  • 在「测试文本」区域粘贴待匹配内容,点击「测试匹配」查看结果
  • 点击「常用正则表达式」表格中的「测试」按钮,可自动填入正则和示例文本并跳转到顶部
  • 点击「加载示例」可快速体验工具效果;点击「清空」重置所有输入
注意事项
  • 正则使用 JavaScript 引擎,与 Java、Python、.NET 等语言的语法略有差异(如后行断言需 ES2018+)
  • 复杂的回溯正则在大文本上可能导致浏览器卡顿,建议先用小文本验证
  • 所有处理均在浏览器本地完成,不会上传任何数据