前端对中文姓名的校检

这里的中文指的是身份证上人的姓名。

一开始的表达式是这样的

/^[\u4e00-\u9fa5]{2,15}$/

但是有一个叫 李𠇔 的人,我想着那就是字符集范围不够大,而且还要支持"·.",于是改成下面这样

/^[\u4e00-\u9fff·.]{2,15}$/

还是不行,而且𠇔这个字'𠇔'.length是 2,普通的汉字都是 1,于是就改成了下面这种

            let replaceResultStr = val.replace(/\p{sc=Han}/gu, '')
            replaceResultStr = replaceResultStr.replace(/[·.]/g, '')

            if (replaceResultStr) {
                return false
            }

            let valArr = Array.from(val)
            if (valArr.length < 2 || val.length > 15) {
                return false
            }

"\p"和"u"是需要同时出现的,表示匹配某种属性的字符,u 表示 unicode 编码

Array.from(val)可以解决字符长度判断的问题

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容