极简工具箱

免费在线工具 · 本地计算 · 无需上传

正则表达式入门与实用例子

校验手机号、从日志里抠出 IP、批量替换文本格式——正则表达式是最省力也最容易写错的工具。这篇不堆完整语法表,只讲最常用的 20% 和 8 个能直接抄的例子。

广告位(百度联盟)

一、先记住这几个元字符

二、量词与贪婪

例:对 <a>1</a><a>2</a>,<a>.*</a> 会一次吞掉整行,而 <a>.*?</a> 会匹配到两段。

三、断言(不消耗字符)

(?=...) 正向前瞻、(?!...) 负向前瞻、(?<=...) 正向后顾。常用来做「必须包含大写字母」「排除某个前缀」这类条件,而不用把条件文字也匹配进结果里。注意部分语言(如老版本 JS)不支持后顾断言,跨语言前先确认。

四、8 个能直接用的例子

中国大陆手机号      ^1[3-9]\d{9}$
简单邮箱            ^[\w.+-]+@[\w-]+(\.[\w-]+)+$
IPv4(粗校验)      ^(\d{1,3}\.){3}\d{1,3}$
日期 YYYY-MM-DD    ^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
URL(http/https)   ^https?:\/\/[^\s]+$
去除行首行尾空白    ^\s+|\s+$          (配合 gm 全局多行)
提取 HTML 标签内容  <([a-z]+)>(.*?)<\/\1>
中文字符            [\u4e00-\u9fa5]+

提醒:手机号、邮箱、日期这类「看起来对」的正则都只是格式粗校验。真要严格校验日期是否合法(比如 2 月 30 日)、手机号段是否真实分配,还是得交给业务逻辑或专门库,别把正则写成万能校验器。

五、修饰符

i 忽略大小写、g 全局、m 多行(让 ^$ 匹配每行首尾)、s 让 . 匹配换行。JS 里 /pattern/flags,Python 用 re.compile(pattern, flags),写法不同但语义一致。

六、怎么调试最快

别在业务代码里盲改。把样本文本和表达式贴进 正则测试工具,打开实时匹配高亮,先看「匹配到了什么」再看「有没有多匹配」;需要批量改写文本时用 文本批量替换 的正则模式,替换前先小样本验证。两个工具都在本地运算,日志、用户数据不外传。

排查顺序建议:先去掉量词看单字符能否匹配 → 逐步加量词 → 加分组 → 最后加断言。正则越复杂越难维护,能用字符串方法解决的就别硬写正则。

小结

元字符 + 量词 + 分组能覆盖八成需求;默认贪婪,加 ? 变非贪婪;复杂表达式一定先在测试工具里跑样本再上线。

本文相关工具(本地计算,无需上传)

更多使用教程