123问免费工具与知识服务
123问工具大全 工具大全 文本工具 正则表达式测试

⟆ 正则表达式测试

实时匹配 · 高亮显示

匹配结果

正则表达式测试常见问题

正则表达式怎么学?

正则表达式由元字符(. * + ? [] {} () | ^ $)和普通字符组成。建议从基础语法开始:.匹配任意字符,*匹配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这几个flags是什么意思?

g=全局匹配(不匹配第一个就停,找所有);i=忽略大小写;m=多行模式(^和$匹配每行首尾)。可以组合如"gi"。

.和\.有什么区别?

'.'是元字符,匹配任意字符(除换行);带反斜杠的 \. 才是匹配字面意义的点号。想匹配真正的句点,必须转义。

贪婪匹配和懒惰匹配是什么?

默认贪婪:* + 会尽可能多匹配。懒惰:加?变成*? +?,尽可能少匹配。比如HTML里匹配<div>...</div>,贪婪会匹配到最后一个</div>,懒惰只匹配第一个。

正则前面的^和最后的$是什么作用?

^表示"从开头匹配",$表示"匹配到结尾"。加上它们表示"整串必须完全符合",常用于校验输入(如手机号、邮箱)。不加则只做"包含匹配"。

为什么我的正则在JS里报错?

常见原因:括号不配对、转义写错(如\d在字符串里要写\d)、量词乱用(如*+叠加)、字符集未闭合。把模式复制到本工具,会给出具体错误提示。

正则的性能问题大吗?

写得很烂的正则可能"灾难性回溯",导致页面卡死。尽量避免嵌套的重复量词(如(a+)+$),对不可信输入做匹配时尤其小心。

正则表达式测试 - 示例演示

示例一:匹配文本中的数字

输入:模式:\d+,flags:g,文本:"电话13812345678,邮编100000,价格99元"
结果:匹配到 13812345678、100000、99 三个数字串,全部高亮
\d 匹配数字,+ 表示一个或多个,g 全局找出所有,这是最常用的组合。

示例二:校验手机号

输入:模式:^1[3-9]\d{9}$,flags:无,文本:"13812345678"
结果:整串完全匹配,判定为合法手机号;若文本多于11位或非1开头则匹配失败
^...$ 保证整串校验,[3-9]表示第二位,\d{9}表示后面9位数字,共11位。

示例三:提取邮箱

输入:模式:\w+@\w+\.\w+,flags:g,文本:"联系 a@b.com 或 c@d.cn"
结果:匹配到 a@b.com 和 c@d.cn 两个邮箱并高亮
\w代表字母数字下划线,\.是转义的点号,用g把多个邮箱都找出来。

正则表达式测试深度解读

正则的30个常用元字符速查

常用正则语法速查
语法含义示例
.匹配任意字符(除换行)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组。

正则里还可以用非捕获组 (?:...) 只要分组不要捕获,性能更好。

正则的常见坑和性能

  • 转义:在JS字符串里写 \d 而不是 \d,否则 \d 会被当成转义字符。
  • 灾难性回溯:避免 (a+)+b$ 这类嵌套重复,可能让匹配指数级变慢。
  • 只匹配不校验:若想校验整串,记得加 ^ 和 $。
  • 中文匹配:用 [\u4e00-\u9fa5] 匹配中文字符。

本工具能实时高亮并提示错误,是调试正则的好帮手。

正则表达式测试参考数据

常用校验正则速查

用途正则
手机号^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. 查看匹配结果。

分享工具: Facebook Twitter 微博 复制链接