身份证号、手机号和银行卡号,因为这几个数字的长度不同,可能存在嵌套现象。
以下正则表达式可以避免出现这种情况。
手机号:
((?<=[^\d])|^)(\+?86)?1([38]\d{
1}|4[579]|5([0-3]|[5-9])|66|7([1-3]|[5-8])|9[189])\d{
8}((?=[^\d])|$)
身份证号:
((?<=[^\d])|^)((1[1-5])|(2[1-3])|(3[1-7])|(4[1-6])|(5[0-4])|(6[1-5])|(71)|(8[1-2]))\d{
4}(19|20)\d{
2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{
3}[0-9Xx]((?=[^\d])|$)
银行卡号:
((?<=[^\d])|^)([1-9]{
1})(\d{
15,16}|\d{
18})((?=[^\d]xX)|$)