我想使用正则表达式来确定用户提供的值是否存在于已批准值的列表中,无论 case。这是当前 JavaScript 代码的精简示例,它可以匹配“JAN”、“Jan”和“jan”——但不匹配“jAN”、“jAn”等:
var validateValue = function(field, patternName){
"use strict"; //let's avoid tom-foolery in this function
var pattern="";
switch(patternName)
{
case "MMM": //month names only
pattern=/^JAN|Jan|jan*$/;
break;
// other cases and default follow in real code
}
if ( (!field.value.length) || pattern.test(field.value) ){
//we're good (the field is blank or passes the regular expression test); remove field's error message, enable the submit button
}
else {
//problems; let's show the error message and put focus back on problem field, disable the submit button
}
};
我根据从“不使用 RegexOptions 枚举的情况下不区分大小写的正则表达式”中学到的东西尝试了pattern=/^
(?i),但这并不能解决问题(“未捕获的 SyntaxError:无效的正则表达式......”)JAN|Jan|jan*$/;
评估值是否匹配、不区分大小写、列表项的正确正则表达式是什么?