const validateVin = (rule, value, callback) => {
const isABC = /\D/; //是否含有字母
const reg = /^[A-Z]+$/; //字母是否大写
if (!value) {
callback(new Error('不能为空'));
} else if (value.length < 17) {
callback(new Error('不够17位'));
} else {
if (!isABC.test(value)) {
callback(new Error('是否含有英文'));
if (!reg.test(value)){
callback(new Error('英文必须大写'));
}
}
}
};
是否包含字母就生效了,我的正则没写错啊
你这写的,问题还不少
首先,你最后两个和英文判断有关的逻辑是怎么在写啊.前面 callback 后,你确定后面的一个判断,即使运行了,还能 callback 出去?
/\D/
也不是你想,他是匹配所有除了数字之外的字符 比如~!@$%^&*()_+
这都是能被/\D/
匹配到的/^[A-Z]+$/
你这个判断是要求你验证的内容必须全部位大写字母啊..其实你前一步验证了一定包含英文,后面这个包含的英文必须为大写,这个并不好些,但是反过来,只要能匹配到小写英文就说明有问题不就好些多了么...