是否有已知的正则表达式用于验证信用卡磁道1和磁道2数据?
编辑:
来自维基百科:
金融卡磁道1上的信息包含多种格式:A是保留给发卡方专有使用的,B如下所述,C-M保留给ANSI子委员会X3B10使用,N-Z可供各个发卡方使用:
磁道1,格式B:
- 起始标志 - 一个字符(通常为'%')
- 格式代码="B" - 一个字符(仅限字母)
- 主帐号 - 最多19个字符。通常情况下是与卡片正面印刷的信用卡号匹配的。
- 字段分隔符 - 一个字符(通常为'^')
- 姓名 - 两到26个字符
- 字段分隔符 - 一个字符(通常为'^')
- 过期日期 - 四个字符,格式为YYMM。
- 服务代码 - 三个字符
- 自选数据 - 可包括PIN验证密钥指示器(PVKI, 1个字符),PIN验证值(PVV, 4个字符),卡验证值或卡验证码(CVV或CVK, 3个字符)
- 结束标志 - 一个字符(通常为'?')
- 纵向冗余校验(LRC) - 它是一个字符和一个从磁道上其他数据计算出的有效性字符。应该注意到,当刷卡器将卡片刷到表示层时,大多数读卡设备不会返回此值,并且仅在内部验证输入时才使用它。
轨道2: 这种格式是由银行业(ABA)开发的。该轨道采用了5位方案(4个数据位+1个校验位),可以表示16个可能的字符,包括数字0-9和六个字符 : ; < = > ?。选择这六个标点符号可能看起来很奇怪,但实际上这十六个代码只是映射到ASCII范围0x30到0x3f,定义了十个数字字符加上这六个符号。其数据格式如下:
- 起始标识符——一个字符(通常为“;”)
- 主账户号码(PAN)——最多19个字符。通常与印在卡片正面的信用卡号匹配,但并不总是匹配。
- 分隔符——一个字符(通常为“=”)
- 过期日期——形式为YYMM的四个字符。
- 服务代码——三个字符
- 自选数据——与轨道1中的类似
- 结束标识符——一个字符(通常为“?”)
- 纵向冗余校验(LRC)——它是一个字符和一个从轨道上其他数据计算出的有效性字符。需要注意的是,大多数读卡器设备在刷卡时不会返回此值到表示层,只在读卡器内部验证输入。