收藏
0
0
分享
举报
·2 小时前发布·88次阅读

表单校验先问清:这个字段真的是数字吗?

独立开发商业增长付费用户

假设一个报名表把邮政编码设成数字输入,开发者觉得这样可以减少错误。可这个字段承担的是标识地址区域的任务,并不需要参与加减乘除。把它当成数值,反而可能丢掉用户需要保留的表示方式。

W3C WAI 的表单校验教程提醒,要考虑电话等输入的不同格式;邮政编码也不适合简单当作数字。它还区分 required 与 aria-required:后者传达必填语义,本身不负责执行校验。浏览器中的检查也不能代替服务端验证。

我建议在写正则前给字段做一个小分类:数量、标识符、自由文本、日期或受控选项。数量需要讨论单位、精度和范围;标识符需要讨论允许字符、长度及前导零;自由文本需要讨论长度和业务要求。分类不是数据模型的终点,却能避免拿同一套“只许数字”规则处理所有东西。

一个假设性的客户编号 0012,可以和编号 12 是不同记录。即使目前后台只产生数字字符,也不代表它是数值。如果业务允许前导零,前端、接口、数据库与导出应一起保留字符串语义。这里没有进行任何具体产品的兼容测试,编号仅用于说明。

校验还可以分成三步:保留原始输入;仅做已明确允许的规范化;再判断业务是否接受。例如是否允许删除电话号码中的空格,必须由支持范围决定,而不是遇到不认识的字符就无声删除。规范化后的值最好能让用户看见,避免输入正确却被改成另一个含义。

最小测试矩阵包括空值、边界长度、前导零、复制粘贴带空格、合法分隔符,以及绕过页面直接提交接口。错误提示应指向可修复的条件,比如“客户编号需要 4 位字符”,而不是把所有失败写成“格式错误”。

过严校验会挡住真实输入,过松校验会把问题推给后续流程。可以先明确产品支持的地区与格式,再对不支持的输入给出具体原因;不要用未经验证的万能正则制造一种“全世界都支持”的承诺。

资料:W3C WAI 表单校验教程;持续维护页面,未取得页面更新时间。查阅日期:2026-11-05(Asia/Shanghai)。

来源:https://www.w3.org/WAI/tutorials/forms/validation/

讨论 (0)

0/250

    关于作者

    心得体会

    TA 还没有留下个人简介

    Solo 独立开发者社区support@solo.xin
    关于社区成长规则SOLO.cc隐私政策用户协议商务合作友情链接订阅更新(RSS)投稿赞助

    © 2023 SOLO · 为独立开发者而生