2016-08-10 13 views
0

入力フィールドをMM/dd/yyyy、MM-dd-yyyy、またはMMddyyyyに一致させようとしています。複数形式の日付のng-pattern

私は正規表現の初心者ですが、私は次のように書いた:

/^[0-9][0-9][\-\/0-9][0-9][0-9][\-\/0-9][0-9][0-9]([0-9][0-9])/ 

これは、MM/DD/YYYYとMM-DD-YYYYの両方に一致ではなく、MMDDYYYY。それは私が欲しくない行の10個の数字にもマッチします。ヘルプは非常に高く評価されます。

答えて

1

このコードは実際の日付であることを確認しません。たとえば、2月31日が受け入れられます。

/^([0-9]{2}[-/][0-9]{2}[-/][0-9]{4})|([0-9]{8})/ 
0

ng-patternを使用してMM/DD/YYYYと一致させます。

<md-datepicker flex 
    id="start" 
    label="start" 
    name="start" 
    ng-model="vm.start" 
    md-placeholder="Start Date" 
    ng-pattern="^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$" 
    required> 
</md-datepicker> 
+0

MM/dd/yyyy、MM-dd-yyyy、MMddyyyyに一致する必要があります。 – NeX

1

私の中に、この正規表現を使用して ng-pattern='/^((0[13578]|1[02])[\/.]31[\/.](18|19|20)[0-9]{2})|((01|0[3-9]|1[1-2])[\/.](29|30)[\/.](18|19|20)[0-9]{2})|((0[1-9]|1[0-2])[\/.](0[1-9]|1[0-9]|2[0-8])[\/.](18|19|20)[0-9]{2})|((02)[\/.]29[\/.](((18|19|20)(04|08|[2468][048]|[13579][26]))|2000))$/

Codepen

0

.... MM/DD/YYYY.Whichもうるう年検証します一致するには、以下のNGパターンを使用します私は10/29/YYYYと10/30/YYYYの日付のバグを見つけました。訂正すると今は完璧に動作しています。正しい表現は次のとおりです。

 
ng-pattern='/^((0[13578]|1[02])[\/.](29|30|31)[\/.](18|19|20)[0-9]{2})|((01|0[3-9]|1[1-2])[\/.](29|30)[\/.](18|19|20)[0-9]{2})|((0[1-9]|1[0-2])[\/.](0[1-9]|1[0-9]|2[0-8])[\/.](18|19|20)[0-9]{2})|((02)[\/.]29[\/.](((18|19|20)(04|08|[2468][048]|[13579][26]))|2000))$/'>