正则里的点号不匹配换行:多行模式的开关
看 JWT 只需要三段:头部说明算法,载荷放数据,签名防止篡改。过期问题先看 exp,再找服务端时区。
这几步做熟了都是几分钟的事,卡住的多半是第一判断。
正则:从样本开始试
点号默认不匹配换行符。想跨行匹配要开 dotall 模式,或者在多行文本里用 \\s\\S 代替点号。
贪婪匹配会尽量多吃,直到最后一个可能的结束位置;加问号变成非贪婪,吃到第一个就停。日志提取通常要非贪婪。
分组引用在不同工具里写法不同:JS 用 $1,sed 用 \1,Python 用 \1。复制别人的替换规则前先确认方言。
匹配中文不要写 a-z 那套思路。直接写汉字范围或用 \u4e00-\u9fa5,更稳的是按 Unicode 属性匹配。
JWT:先解码再怀疑
JWT 三段用点分隔:头部(算法)、载荷(数据)、签名。前两段是 Base64URL 编码,不是加密,任何人都能解出来看。
所以载荷里不要放敏感信息。它的安全性来自签名不可伪造,而不是内容不可见。
exp 是过期时间,单位是秒级时间戳,不是毫秒。把毫秒当秒填,会得到一个几万年后的有效期,看起来永远不过期。
接口还认过期 token,通常是服务端没校验 exp,或者设了较长的宽限期。这是服务端的事,客户端解析只能确认自己的时间对不对。
子网与 Cron:记住规则就够用
/24 表示前 24 位是网络号,剩下 8 位给主机,可用地址是 2^8 − 2 = 254 个(去掉网络地址和广播地址)。
/26 借了 2 位做子网,每段 62 个可用地址。划分时先算块大小:256 − 掩码最后一个字节,就是每块的跨度。
Cron 里 * 表示每,*/5 表示每 5 个单位,1,3,5 表示枚举,1-5 表示范围。0 0 * * * 是每天零点。
日和周的字段在多数实现里是「或」关系:日写 1、周写 1,会在一号和周一都触发,不是同时满足。
工具说明
上面几步里,正则测试是最常用的那个。我在 知办库(https://www.zhibanku.com )上直接用:
正则测试 → 在线工具
这些验证都是一次性的,浏览器里跑一下就能确认,不用为标准库写临时脚本。知办库的做法是纯浏览器处理,文件不上传、不需要注册,打开页面就能用。同类小工具还有几十个,按分类找比较省事。
一点说明
以上是我自己流程里的做法,不一定适合所有人。如果你的场景有更好的顺序,欢迎在评论区补充。