我正在验证表格,表格中的文字必须是CIT,BIS或MATH
if(dept == ""){
msg += "You must enter a department\n";
}else if((dept != "CIT") && (dept != "BIS") && (dept != "MATH")){
msg += '"' + dept + '"' + " is not one of CIT, BIS, or MATH.\n";
}
我需要添加某种形式的正则表达式,以确保输入时的文本CIT,BIS或MATH可以以任何形式放入大写和小写。
任何帮助都会很棒 感谢
答案 0 :(得分:3)
不需要正则表达式。
在验证之前,只需将输入转换为小写。
if (dept == "") {
msg += "You must enter a department\n";
}
else if (isInvalid(dept)) {
msg += '"' + dept + '"' + " is not one of CIT, BIS, or MATH.\n";
}
function isInvalid(u) {
var s = u.toLowerCase();
var validStrings = [ "cit", "bis", "math" ];
for (var i = 0; i < validStrings.length; i++) {
if (s === validStrings[i]) {
return false;
}
}
return true;
}
正如@y_nk指出的那样,以下方法会更有效(如有必要):
function isValid(s) {
var validationObject = { "cit" : true, "bis": true, "math": true };
return validationObject[ s.toLowerCase() ] === true;
}
答案 1 :(得分:1)
如果你真的认为正则表达式是这样的:
if (!/^(?:BIS|CIT|MATH)$/i.test(dept)) {
}
必须锚定表达式,这就是为什么你也会看到非捕获组的原因。
更好的方法是:
if (['cit', 'bis', 'math'].indexOf(dept.toLowerCase()) == -1) {
}
不幸的是,由于Array.indexOf()
答案 2 :(得分:0)
像这样的东西
var regex = new RegExp("^CIT$|^BIS$|^MATH$", "i");
if(dept == ""){
msg += "You must enter a department\n";
}else if(!regex.test(dept)){
msg += '"' + dept + '"' + " is not one of CIT, BIS, or MATH.\n";
}