0

フォームを検証していますが、フォームに入力するテキストは 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 を大文字と小文字のいずれの形式でも入力できるようにするために、何らかの形式の正規表現を追加する必要があります。

どんな助けでも素晴らしいでしょうありがとう

4

3 に答える 3

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;
}
于 2012-11-27T01:54:38.807 に答える
1

あなたが本当に正規表現が道だと思うなら:

if (!/^(?:BIS|CIT|MATH)$/i.test(dept)) {
}

式を固定する必要があったため、非キャプチャ グループもそこに表示されます。

より良いアプローチはこれです:

if (['cit', 'bis', 'math'].indexOf(dept.toLowerCase()) == -1) {
}

残念ながら、これは IE9 以降でしか機能しません。Array.indexOf()

于 2012-11-27T01:59:04.903 に答える
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";
}
于 2012-11-27T01:58:39.720 に答える