2017-01-13 14 views
2

js( "yyyy/mm/dd")形式の日付を検証しようとしています。グーグルでは、他の日付形式がチェックされていますが、この形式では取得できません。jsを使ってregexの日付検証をチェックする方法は?

いずれかのPLZが私を助けることができます。

ここに私のコードです。

function dateChecker() 
{ 
    var date1, string, re; 
    re = new RegExp("\d{4}/\d{1,2}/\{1,2}"); 

    date1 = document.getElementById("visitDate").value; 
    if(date1.length == 0) 
    { 
     document.getElementById("showError").innerHTML = "Plz Insert Date"; 
     document.getElementById("showError").style.color = "red"; 
    } 
    else if(date1.match(re)) 
    { 
     document.getElementById("showError").innerHTML = "Ok"; 
     document.getElementById("showError").style.color = "red"; 
    } 
    else 
    { 
     document.getElementById("showError").innerHTML = "It is not a date"; 
     document.getElementById("showError").style.color = "red"; 
    } 

} 
+0

使用 '再=/\ D {4} \/\ D { 1,2}// d {1,2}/'または' re =/^ \ d {4} \/\ d {1,2} \/\ d {1,2} $/'文字列は一致する必要があります。 '\ {1,2}'はタイプミスで、コンストラクタの表記法を使用する必要がある場合は、バックスラッシュを2倍します。それでも、このように日付を検証するのではなく、文字列が日付のように見えるかどうかを確認するだけです。 –

+0

use moment.js、regexは日付検証には最適ではありません。 moment.jsでは、isValid関数のようなことができます。 –

+0

申し訳ありません!それらのうちのどれも私のために働かない。 –

答えて

0

を。

re = new RegExp("\d{4}/\d{1,2}/\d{1,2}"); 
re.compile(); 

また、compileを呼び出す必要がないこの方法で正規表現を書くこともできます。上記の正規表現は正しくないこと

re = /\d{4}\/\d{1,2}\/\d{1,2}/; 

EDIT

注(すなわち、それは無効な日付を承認することができます)。私は簡単な答えは、正規表現を使用して日付を検証することではないと思う。 momentjsまたはdatejsのような日時ライブラリを使用してください。あまりにも多くのロジックがあります。たとえば、うるう年、可能な日数の異なる別の月などをどう扱うのですか?それは単なる痛みです。それが解析できない場合は、解析することができるライブラリを日付の時ではなく使用してください。ライブラリを信頼してください。また、あなたは正規表現に慣れて取得したい場合は、この

re = /^\d{4}\/(10|11|12|\d)\/((1|2)?\d|30|31)$/; 

のようなものと近づくことができしかし

、ダウンロードExpresso

+0

ありがとう、しかし、私はそれが有効になる日付をチェックしています "9999/99/99" –

+0

答えに編集を参照してください – GantTheWanderer

1

この試してみてください:あなたはnew RegExpを使用する場合は、あなたがた正規表現オブジェクトにコンパイル呼び出す必要があり

var date = "2017/01/13"; 
var regex = /^[0-9]{4}[\/][0-9]{2}[\/][0-9]{2}$/g; 
console.log(regex.test(date)); // true 
console.log(regex.test("13/01/2017")); //false 
console.log(regex.test("2017-01-13")); // false 
関連する問題