#1624·validator

`credit_card` 验证器是否支持用分隔符分隔的卡号?

作者: Wi1low创建于 2026年9月7日更新于 2026年9月7日

□发生了什么事?

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