1

すべての正規表現を 1 つのオブジェクトに格納して、JavaScript でフォームを検証しようとしていますが、正規表現を呼び出しても機能しません。

;(function() {

         var Rules = {
            "nick"     : '/^[0-9a-zA-Z_]{5,20}$/'
          , "password" : '/^.*(?=.{8,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/'
          , "email"    : '/^[_a-z0-9.-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/'
          , "name"     : '/^[a-zA-Z -]+$/'
          , "date"     : '/^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$/'
          , "country"  : '/^[a-zA-Z]+$/'
        };

        $('.validation-required').click(function(e){
          $(e.target).blur(function(){
            if( e.target.value( Rules [ e.target.name ] ) ) {
              console.log('true');
            }
            else {
              console.log('false');
            }
            $(e.target).unbind('blur');
          });
        });
      })();

したがって、常に"false";を返します。私はこのようなことを試しました:

if( e.target.value( new RegExp ( Rules [ e.target.name ] ) ) ) ...

また

if( e.target.value( Rules [ e.target.name ].toString() ) ) ...

また

if ( Rules [ e.target.name ].test( e.target.value ) ) ...

この場合、コンソールはエラーをスローします。

(...) has no methd test

どうすれば修正できますか?

4

2 に答える 2

4

含まれているエントリは、Rules引用符で囲まれているため、正規表現リテラルではなく文字列です。代わりにこれを行います:

var Rules = {
    "nick": /^[0-9a-zA-Z_]{5,20}$/
    ...

また、それが正しいかどうかif (e.target.value(Rules[e.target.name]))はわかりません...もっと似たものにする必要がありますif (Rules[e.target.name].test(e.target.value))か?

于 2013-03-04T23:34:11.783 に答える
0

最後の例if (...).testは、構文エラーです。

于 2013-03-04T23:36:31.957 に答える