前端便利店

前端对中文姓名的校检

2024-09-18  本文已影响0人  小遁哥

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

一开始的表达式是这样的

/^[\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)可以解决字符长度判断的问题

上一篇 下一篇

猜你喜欢

热点阅读