0

カスタム正規表現メソッドがあります:

$.validator.addMethod(
    "dateRegex",
       function(value, element, regexp) {
         var re = new RegExp(regexp);
         return this.optional(element) || re.test(value);
       },
       "Date must be in the format MM/DD/YYYY"
 );

次のような日付フィールドで jQuery 検証を行いました。

rules:
      date:
        {
        required: true,
        dateRegex: '^(0[1-9]|1[012])[- //.](0[1-9]|[12][0-9]|3[01])[- //.](19|20)\d\d$',
        maxlength: 10
        }
      }
messages: {
    lossDate: {
    required: "Unable to proceed, search field is empty"
    }   
}

有効な日付 (2013 年 8 月 6 日など) を入力すると、「日付は MM/DD/YYYY の形式である必要があります」と表示されます。誰かが私の正規表現に間違いを見ていますか、それとも問題はそれ以外にありますか?

テスト データはここに渡されます: http://regexpal.com/

また、アプリで次の作業を行っています。

$.validator.addMethod(
    "regex",
    function(value, element, regexp) {
       var re = new RegExp(regexp);
       return this.optional(element) || re.test(value);
    },
    "Invalid number of characters entered."
);

number: 
      {
    required: true,
    regex: '^(.{7}|.{9}|.{11}|.{12}|.{15})$' 
      },...
4

1 に答える 1

3

そのプラグインは正規表現の文字列を必要としないと思います。文字列リテラルの代わりに、正規表現リテラルを入れます:

…,
dateRegex: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$/,
…

次に、関数を単純化することもできます。

function(value, element, regexp) {
    return this.optional(element) || regexp.test(value);
}
于 2013-08-06T20:43:08.917 に答える