通过一个栗子来讲解
邮政编码的规则是第一位是 1-9,一共有 6 位数字组成。现在要求你写出一个正则,提取文本中的邮政编码
[1-9]\d{5}
测试文本 | 结果 |
---|---|
012300 | 不满足第一位是 1-9 |
130400 | 满足要求 |
465441 | 满足要求 |
4654000 | 长度过长 |
138001380002 | 长度过长 |
可以发现:
7 位数的前 6 位也能匹配上,12 位数匹配上了两次,这显然是不符合要求的,它们并不是正常的邮政编码
所以,除了 6 位数的规则外,这 6 位数左边或右边都不能是数字
记忆口诀
<看左边,没有<看右边,感叹号是非的意思
(?<!\d)[1-9]\d{5}(?!\d)
这样就满足正常邮编的规则了
(?<!\w)
(?!\w)
\b\w+\b
但并不推荐这样写,直接用 \b 写不香吗
( )