2
0
0
正则速查笔记:每天都要搜索一遍的那几个
说是速查,其实是「今天又搜了一遍」的记录。放这儿以后直接 Ctrl+F。
数字 / 空白
^[0-9]+$ 纯数字(\d+ 也行,注意别把全角数字放进去)
^\s+|\s+$ 首尾空格
\s+ → ' ' 连续空白压成一个
\n{2,} → \n 多个空行压成一个中文
^[\u4e00-\u9fa5]+$ 纯中文(不含生僻字扩展区,一般够用)
[\u4e00-\u9fa5]+ 提取中文段落
常用提取
(\d{4}-\d{2}-\d{2}) 日期
1[3-9]\d{9} 手机号
(?<=href=")[^"]+ 取 href 里的链接(lookbehind)
(?<=\[)[^\]]+(?=\]) 前后都固定时取中间(lookaround 组合)坑(重点记这几个)
- ⚠️ JS 的变长后行断言直接报错:
(?<=a+b)不行,固定长度才可以;Java/Python 没这限制——写之前先想清楚跑在哪 - ⚠️ 贪婪 vs 非贪婪:
<div>.*</div>会一口气吃到最后一个</div>,HTML 场景老老实实用.*? - ⚠️ 正则里
/不用转义,但写进 JS 字符串/JSON 要多层转义,\d在 JSON 里是\\d——配错层是常事 - ⚠️ 手机号
^1[3-9]\d{9}$别漏[3-9],早年的 14/15 段现在也还在用 - ⚠️
^$在多行模式(m 标志)下是「行首行尾」不是字符串首尾,校验表单别乱加 m
调试习惯
写完先拿这三个测:空串、超长串、带换行的串。regex101.com 开着,左边写右边看匹配过程,比干瞪眼快十倍。