4

私は現在、プログラムに取り組んでいます。正規表現とjqueryを使用して日付入力をフォーマットするように指示されました。問題が発生したため、次のテスト コードを実行することにしました。

function formatDate() {
    var regEx = /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d$/;
    var test = "02/20/1901";
    var obj = $('.format');
    var febRexEx = /^(02)[\/](3[01])[\/](19|20)\d\d$/;
    if (test == regEx) {
        alert("Matches Regular Expression 1.");
        if (test == febRexEx) {
            alert("Bad date!\nMatches Regular Expression 2!");
        } else {
            alert("Not a bad date.\nDoesn't match Regular Expression 2.");
        }
    } else {
        alert("Bad date!\nDoesn't match Regular Expression 1!");
    }
}

私はまだjavascript、jquery、およびregexにかなり慣れていないので、テスト日が最初の正規表現と一致しない理由を理解していません.

どんなアイデアでも大歓迎です!書式設定するコードはありますが、書式設定後に日付が一致することを確認する必要があります。これがこのコードの出番です。

4

1 に答える 1

4

文字列を正規表現と直接比較することはできません。次のようなものを使用してくださいmatch

  function formatDate() {
      var regEx = /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/](19|20)\d\d$/;
      var test = "02/20/1901";
      var obj = $('.format');
      var febRexEx = /^(02)[\/](3[01])[\/](19|20)\d\d$/;
      if (test.match(regEx)) {
          alert("Matches Regular Expression 1.");
          if (test.match(febRexEx)) {
              alert("Bad date!\nMatches Regular Expression 2!");
          } else {
              alert("Not a bad date.\nDoesn't match Regular Expression 2.");
          }
      } else {
          alert("Bad date!\nDoesn't match Regular Expression 1!");
      }
  }

フィドル

于 2013-07-22T15:12:38.270 に答える