今天碰到一个关于后端数据对人名进行加密之后,前端返回人名格式变成了“王*路”,这种格式下,如果进行数据编辑的时候,我们设置了正则校验,他中间的*号在检验规则里的判定方式。
错误代码:
一开始以为加一个*号的判定就可以了,但是好像是自己技术不行还是怎么滴,怎么都加不上,搜官网,说是*代表的是匹配前面的子表达式零次或多次。
/^[\u4e00-\u9fa5]([\u4e00-\u9fa5\*])$/
// 汉字语义这个方法是第一位是汉字,后面可以跟着汉字或者是星号(*),
但是在实际项目中,不起作用。
思路梳理:
大概的思路就是,判定姓名的时候第一位肯定得是汉字,所以第一位的写法是[\u4e00-\u9fa5]这个,这个表示的是只允许输入中文,第二位以后的可以是汉字也可以是*,正则的写法应该为[\u4e00-\u9fa5\*],这个表示汉字或者是*这个特殊符号,但是怎么样才能让他实现汉字和特殊符号的共同拼接呢,想了想,这个就好比是有特殊符号的正则表达式
/^?![!#$%^&*]+$/。
那么这个就应该是/^[\u4e00-\u9fa5]([\u4e00-\u9fa5\*])+$/这么写
正确代码:
/^[\u4e00-\u9fa5]([\u4e00-\u9fa5\*])+$/
完整代码:
{
required: true,
message: "请输入联系人姓名",
trigger: "blur",
// 正则表达式,第一位必须是汉字,中间可以有*号和汉字
pattern:/^[\u4e00-\u9fa5]([\u4e00-\u9fa5\*])+$/
},{
min: 2,
max: 4,
message: "请输入正确的联系人姓名",
trigger: "blur",
},