2011-01-30 3 views
8

誰かが私の単純な正規表現がうまく動作しない理由を私のエンドウ豆の脳が理解するのを助けることができますか?JavaScriptの正規表現をX桁に一致させるだけ

MM/DD/YYYYの日付形式をと正確に一致させたいのですが、は2桁と4桁ですので、01/16/1955のようになります。私のコードは、以下のことを行いますが、それはまた、同様に、私の検証に合格し2+4+数字なので、何か011/16/1955または01/16/19555(1余分な数字)などが一致しました。

//validate date of birth 
var dob_label = $date_of_birth.find('label').text().slice(0, -1), 
dob_mm   = $dob_mm.val(), 
dob_dd   = $dob_dd.val(), 
dob_yyyy   = $dob_yyyy.val(),  
regex_two_digit = /^\d{2}$/, 
regex_four_digit = /^\d{4}$/; 

if ((regex_two_digit.test(dob_mm)) && (regex_two_digit.test(dob_dd)) && (regex_four_digit.test(dob_yyyy))) { 
    //a button is enabled here 
} else { 
    //a validation error is thrown here and the button is disabled 
} 
+0

を試してみてください。.. 。プレースホルダと組み合わせれば、うまく動作します... – Tracker1

答えて

19

開始し、文字列

/^\d{4}$/ 
+0

とにかく、代わりにドロップダウンを使用してみませんか? –

+1

私はそれを試して、それは私のためには動作しません。ユーザーはキーボード入力者なのでドロップダウンはありません。改訂されたコードでは、2桁または4桁以上の数字が使用できます。それは数字(私は 'aa'を行うことはできません)を検証しますが、それでも私は理解できないほど多くの桁を許しています... *編集*待機、それは働いているようですが、私は最初/最後の文字を複数回試しました。あなたは、このような答えを提供するとあなたはどこ正しく動作します示唆されているのか、なぜ、あなたも説明する必要がありますが、リフレッシュのいくつかの種類を持っていた/shrug...maybe –

+0

笑/キャッシュ事が起こっているとコードが実際に –

1

の終わりを指定する必要があり、単一の入力を持っており、お好みの形式にそれを解析してフォーマットするdate.jsを使用しないのはなぜこの^\d{1,2}\/\d{1,2}\/\d{4}$

+3

を更新しませんでした質問のコードはそうではありません。 –

関連する問題