`credit_card` 验证器是否支持用分隔符分隔的卡号?
□发生了什么事?
credit card'验证器目前只处理空格分隔的信用卡号码。 用破折号格式的牌号(例如4111-1111-1111')被错误地拒绝,因为digiters HaveLuhnChecksum'呼叫strconv'。 Atoi ' on " -- " 字符,该字符失败并返回 " 假 " 字。
□ 示例代码
开始 主软件包
导入( E) "fmt" (英语). "GitHub.com/去玩地/验证人/v10". (中文(简体) ).
类型 付款结构{ 卡号字符串“ 验证 ” :“ credit card ” {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
func 主 () { 校验 : = 校验器. New ()
// 这些是 VALID 牌号, 但目前为 FAIL 验证 : 支付 := [] 字符串{ "4111-1111-1111-1111",// 签证,破折号分离 "3782-822463-10005", // Amex, 破碎分离 "4624-7482-3324-9780",//发现,破折号分出. {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? / 请检查url=值 (帮助). 今天的工作是正确的: p:= 付款{卡号: "4111 1111 1111"} /// 空位分隔 fmt. (英语). Printf ("卡: %s - >" 错误:%v\n",p.Card Number, 验证. Struct(p)) {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
□ 预期行为
与空格相隔的卡号一样, Dash-separated card number应当被验证,因为破折号是一种合法的卡号格式(使用在Android支付表,一些银行应用,被ISO/IEC 7812认可).
□ 实际行为
Dash 分隔的数字因无效而被拒绝 。
□ 版本( O)
(单位:千美元)
□问.
维护者会接受一个在处理前从输入中剥离破折的PR吗? 改动将是一个 " 字符串 " 。 替换“iCreditCard”中的All,加上测试案例。 它不会打破任何现有的行为,因为空间分隔和平数格式已经得到正确处理.内容来源: go-playground/validator