身份信息录入时的各种坑
回忆一下开发身份信息管理模块时遇到的各种坑。
界面
一个很简单的信息维护界面,而且当年还是jQuery开发:
身份证号*:[______________________] [读取身份证]
姓名*:[____________] 姓*:[_______] 名*:[_______]
拼音*:[____________] 姓*:[_______] 名*:[_______]
性别*:(____)男 (____)女
生日*:[______]年[____]月[____]日
居住地*:[______]省[______]市[______]区
手机号*:[______________]
其他选填项……
坑
本意是要求必填项全部正确填写、并且符合规则,结果就遇到了下面各种问题:
- 身份证号
- 身份证号强制18位:港澳台身份证的规则跟大陆不一样,不能强制18位
- 身份证号不处理全半角:港澳身份证号里有个括号,要统一转换
- 不是公安系统却校验身份证号是否符合规则:由于历史原因,有极个别人的身份证号就是不符合校验规则的
- 涉港澳台的业务时强制填身份证号,未考虑其他途径:有些业务要用大陆签发的居住证,而非当地的身份证
- 姓名
- 强制填姓氏:有些少数民族没有姓氏,还有一些姓名比较特殊,例如维族姓名买买提・吐尔逊,后边的吐尔逊不是姓,是买买提他爸的名字
- 姓名字段长度不够:阿卜杜热西提・伊盖木拜尔迪
- 姓名中的各种点:买买提・.・・.买买提,需要统一转换
- 拼音:对于少数民族姓名,在官方用途的文件上(例如证件)应当使用汉语拼音。如果是非官方用途,可以考虑允许其他写法,例如买买提是memet。
- 省市区
- 强制填省市区:有些市没有区,例如中山市。有些省有省直属县或县级市,不归属地级市,例如海南省一大堆
- 港澳台没维护数据:想填也填不了
- 行政区划不更新:既然让填省市区那记得定期更新,别“莱芜市人民医院”改名“济南市人民医院”都改6年了,系统里面还是山东省莱芜市呢
- 手机号强制11位:同样是忽略了港澳台和国外号码
结论
校验要有,但是不要太严格,要注意每一个理所当然的校验规则背后可能也有特殊但合法的案例。