Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

el-form 自定义验证 验证字母是否全部大写,这样写为什么不生效

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('英文必须大写'));
    }
}

}
};

是否包含字母就生效了,我的正则没写错啊


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

你这写的,问题还不少
首先,你最后两个和英文判断有关的逻辑是怎么在写啊.前面 callback 后,你确定后面的一个判断,即使运行了,还能 callback 出去?
/D/ 也不是你想,他是匹配所有除了数字之外的字符 比如 ~!@$%^&*()_+ 这都是能被/D/匹配到的
/^[A-Z]+$/ 你这个判断是要求你验证的内容必须全部位大写字母啊..其实你前一步验证了一定包含英文,后面这个包含的英文必须为大写,这个并不好些,但是反过来,只要能匹配到小写英文就说明有问题不就好些多了么...

const validateVin = (rule, value, callback) => {
    const containAlpha = /[a-zA-Z]/; //含有字母
    const containLowerCase = /[a-z]/; //匹配小写字母
    if (!value) {
        callback(new Error('不能为空'));
    } else if (value.length < 17) {
        callback(new Error('不够17位'));
    } else if (!containAlpha.test(value)) {
        callback(new Error('必须包含有英文'));
    } else if (containLowerCase.test(value)){
        callback(new Error('英文必须大写'));
    }
};

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...