-3

誰でも正規表現の検証を手伝ってくれますか?

日付を入力できる要件を考え出しました

mm/dd/yyyy
mm/dd/yy
m/d/yyyy
m/d/yy

私の正規表現は、4 つの可能性すべてをサポートする必要があります。

これで私を助けてください。

前もって感謝します。

はい、有効な日付を確認する必要があります。

これは私のコードで、正規表現の検証を通過した後に有効な日付をチェックします。

$.validator.addMethod("ValidDate", function(value,element) {
            var result = true;
            if($('#'+element.id).val() != "")
            {  
               var reg = new RegExp("regexcode");
               if (!reg.test($('#'+element.id).val())) 
               {
                result = false;
               }
            }   
            if(result == true)
            {
             $("#"+element.id).datepicker("option", 'mm/dd/yy', $("#"+element.id).val());}
            return result;
            },"Please enter valid date.");
4

4 に答える 4

0

最近、有効な米国スタイルのm / d/y日付のみに正しく一致する正規表現が必要でした。以下のような正規表現を作成しました。これは、うるう年を含む1900年から2099年までのすべての日付に正しく一致します。一致を抽出する必要がなかったため、この正規表現を使用して日付から数値を抽出することはできません。

この正規表現は非常に凶悪であり、その使用は評判を損なう可能性があることに注意してください。バグにも注意してください。記憶から以下を再構築しました。

/^((((0?[13578]|1[02])\/([012]?[1-9]|[12]0|3[01])|(0?[469]|11)\/([012]?[1-9]|[123]0)|0?2\/(0?[1-9]|1[0-9]|2[0-8]))\/(19|20)?[0-9]{2})|((0?2\/29\/((19|20)?(0[48]|[2468][048]|[13579][26])|1900))))$/

欠点があることを知っているので、他の人にそれを改善するように勧めます。

ただし、この正規表現の使用を検討している場合は、代わりに日付の解析を真剣に検討する必要があることを指摘しておきます。ほとんどのブラウザは、日付を解析し、文字列が正しい日付を表していない場合に例外をスローできるDateオブジェクトの拡張機能を提供します。また、これよりも多くの種類の日付形式を処理します。

于 2012-10-19T08:54:50.010 に答える
0

ajaxのMaskValidatorを使用して日付を検証できます。非常に使いやすいです

于 2012-10-19T09:06:54.280 に答える
0
/(0?[1-9]|1[0-2])\/(0?[1-9]|[12]\d|3[01])\/([12]\d{3}|\d\d)/
于 2012-10-19T08:29:28.113 に答える
0

これを試して:

/[0-9]{1,2}[/][0-9]{1,2}[/][0-9]{1,4}/

これにより、正規表現が単純になり、変更が容易になります。その後、日、月、年に入力された値を個別に検証できます (たとえば、年が 1900 から 2099 の間であるかどうかなど)。

于 2012-10-19T08:30:30.453 に答える