⟆ 正则表达式测试
实时匹配 · 高亮显示
实时匹配 · 高亮显示
正则表达式由元字符(. * + ? [] {} () | ^ $)和普通字符组成。建议从基础语法开始:.匹配任意字符,*匹配0次或多次,+匹配1次或多次,?匹配0或1次,[]字符集,{}重复次数。
手机号:^1[3-9]\d{9}$;邮箱:^\w+@\w+\.\w+$;身份证:^\d{17}[\dXx]$;URL:^https?://\S+$;IP:^\d{1,3}(\.\d{1,3}){3}$;邮编:^\d{6}$。
g=全局匹配(不匹配第一个就停,找所有);i=忽略大小写;m=多行模式(^和$匹配每行首尾)。可以组合如"gi"。
'.'是元字符,匹配任意字符(除换行);带反斜杠的 \. 才是匹配字面意义的点号。想匹配真正的句点,必须转义。
默认贪婪:* + 会尽可能多匹配。懒惰:加?变成*? +?,尽可能少匹配。比如HTML里匹配<div>...</div>,贪婪会匹配到最后一个</div>,懒惰只匹配第一个。
^表示"从开头匹配",$表示"匹配到结尾"。加上它们表示"整串必须完全符合",常用于校验输入(如手机号、邮箱)。不加则只做"包含匹配"。
常见原因:括号不配对、转义写错(如\d在字符串里要写\d)、量词乱用(如*+叠加)、字符集未闭合。把模式复制到本工具,会给出具体错误提示。
写得很烂的正则可能"灾难性回溯",导致页面卡死。尽量避免嵌套的重复量词(如(a+)+$),对不可信输入做匹配时尤其小心。
| 语法 | 含义 | 示例 |
|---|---|---|
| . | 匹配任意字符(除换行) | a.c 可匹配 abc |
| \d | 匹配数字[0-9] | \d+ 匹配数字串 |
| \w | 匹配字母/数字/下划线 | \w+ 匹配单词 |
| \s | 匹配空白(空格/制表/换行) | \s+ 匹配连续空白 |
| * | 前一项0次或多次 | a* |
| + | 前一项1次或多次 | a+ |
| ? | 前一项0或1次 | a? |
| {n,m} | 重复n到m次 | \d{3,4} |
| [abc] | 字符集之一 | [0-9] 数字 |
| (ab) | 分组 | (ab)+ |
| | | 或 | cat|dog |
| ^ $ | 行首/行尾 | ^ab$ |
把这些背熟,日常八九成正则都能写。
用括号(...)可以把一部分包起来,既能作为一个整体重复,也能"捕获"这个子串用于后续处理。例如 (\d{4})-(\d{2})-(\d{2}) 匹配日期并把年/月/日分成3组。
正则里还可以用非捕获组 (?:...) 只要分组不要捕获,性能更好。
默认贪婪:量词会尽量多吃。比如 <.+> 匹配 "text" 会从第一个<吃到最后一个>,得到整个 text。
懒惰:<.+?> 只吃到第一个>,得到 。用HTML解析或JSON提取时,懒惰匹配往往更符合直觉。
本工具能实时高亮并提示错误,是调试正则的好帮手。
| 用途 | 正则 |
|---|---|
| 手机号 | ^1[3-9]\d{9}$ |
| 邮箱 | ^\w+@\w+\.\w+$ |
| 身份证 | ^\d{17}[\dXx]$ |
| URL | ^https?://\S+$ |
| IP地址 | ^\d{1,3}(\.\d{1,3}){3}$ |
| 邮编 | ^\d{6}$ |
| 中文字符 | [\u4e00-\u9fa5] |
| 日期(yyyy-mm-dd) | ^\d{4}-\d{2}-\d{2}$ |
1. 输入正则表达式。
2. 输入flags(g全局/i忽略大小写/m多行)。
3. 输入测试文本。
4. 查看匹配结果。