2011-01-15 8 views
2

私は1つの入力フィールドを持っています。名前または番号のいずれかを含むことがあります。javascriptで名前/番号を確認します

入力に少なくとも1つの文字が含まれている場合は、名前として扱い、その長さは11以下にする必要があります。したがって、有効な入力はBob、12BobまたはBob23です。 Bob_1、Bob23が無効になるように、空白やその他の文字は使用できません。

入力に数字だけが含まれている場合は番号として扱います。数字の場合は数字が00から始まり、長さが16以下でなければなりません。

function validateName(){ 
     var name = $('#absender').val(); 
     var length = name.length; 
     if(/^[a-zA-Z0-9]+$/.test(name)){ 
      if(length > 11){ 
       $('#absender').addClass('error'); 
       $('#bsenderInfo').addClass('error'); 
       disableSave(); 
       return false; 
      }else{ 
       $('#absender').removeClass('error'); 
       $('#absenderInfo').removeClass('error'); 
       enableSave(); 
       return true; 
      } 
     }else if(/^[0-9]+$/.test(name)){ 
      if(name.substring(0,2) != "00"){ 
       $('#absender').addClass('error'); 
       $('#bsenderInfo').addClass('error'); 
       disableSave(); 
       return false; 
      } 
      if(length > 17){ 
       $('#absender').addClass('error'); 
       $('#bsenderInfo').addClass('error'); 
       disableSave(); 
       return false; 
      }else{ 
       $('#absender').removeClass('error'); 
       $('#absenderInfo').removeClass('error'); 
       enableSave(); 
       return true; 
      } 
     }else{ 
      $('#absender').addClass('error'); 
       $('#bsenderInfo').addClass('error'); 
       disableSave(); 
       return false; 
     } 
     } 

入力が何であるかは関係ありません、それは私が長さが12の任意のアイデアである場合はfalseを与える:ここで

は私のコードですか?

答えて

3

それがためにこの線のだ:

if(/^[a-zA-Z0-9]+$/.test(name)){ 

すべての番号の文字列がよく、この正規表現に合うので、「それ以外」の文は実行されませんされます。

[a-zA-Z0-9]を確認する前にnumber-usernameの大文字と小文字を確認することでこれを修正できます。

+0

いやは、周りの第一及び第二の条件付きブロックを入れ替えます。 –

2

単一の正規表現は、それを扱うことができる:

if (/^(00[0-9]{1,14}|[a-z0-9]{,11})$/i.test(name)) { 
    // Success condition 
    ... 
} else { 
    // Failure condition 
    ... 
} 
関連する問題