2011-08-10 10 views
1

オランダの銀行口座の妥当性確認のルールを作成する方法を教えてもらえますか?オランダの銀行口座の妥当性確認のルール

は、これまでのところ私は、ウェブ上でこれを見つけたことができます:

regex = /[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{3}/; 

これは私のJavaScriptのである:

function dutchBankAccount(input) { 
var regex = /[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{2}[\\s]{1}[0-9]{3}/; 
if(input.value.toString().match(regex) && !(input.value == "")) { 
    return true; 
} else { 
    input.click(); 
    input.style.border = '2px solid #F20056'; 
    return false; 
} 

} 

そして、ここでは私のHTMLコードは次のとおりです。

<li><input type="text" id="anum" placeholder="Account Number" autocomplete="off" onkeypress="return isNumberKey(event)" onBlur="isValidAnum()" onFocus="emptyAnum('anum')"/></li> 

後にするときに私はオランダの銀行口座に入金します私は私が得るべきではないエラーを取得します。あなたがこれを解決する方法を知っているなら、私を助けてください。

+0

私はあなたが検証可能性がどのように表示されませんクライアントコンピュータと銀行サーバーの間で何らかの種類のプロトコルがないアカウント。 –

+1

どのような検証方法ですか?ちょうど数字(3桁の2桁と1桁の3桁をすべてスペースで区切って表示できます)、またはそれが既存のオランダの銀行口座番号であることを確認しますか? 'elfproef'を満たしていますポストバンク口座を除くすべてのケース? – KooiInc

答えて

1

正規表現の構文が正しくありません。

var regex = /[0-9]{2}\s[0-9]{2}\s[0-9]{2}\s[0-9]{3}/; 

スペースが続く

32 01 28 192 

2桁のように、その後3回、3桁の文字列に一致します。このようなより多くのものを試してみてください。それが、オランダの銀行口座のすべてが私が知らないように見えるかどうか、それはそういうもののための小さな名前空間のように思えますが。詳述すると

(。/(?:\d{2}\s){3}\d{3}/は、同じ文字列を一致させる必要があることを私に発生し、それは少し短いです)

編集 —、元のコードでの正規表現は、いくつかの問題があります:

  • "\ s"(スペース)文字の前のバックスラッシュは2倍になりますが、そうであってはなりません。
  • 1文字クラスのショートカット( "\ s")を角カッコで囲む必要はありません。
  • 接尾辞を付ける"{1}"の正規表現要素も不必要に冗長すぎる

実際の問題は余分なバックスラッシュです。また、不必要に冗長であるということは、入力要素の "value"属性の値に ".toString()"を呼び出す必要はなく、値が空文字列でないことを確認する必要はありませんパターン。この場合、空の文字列はパターンと一致しないので、テストは必要ありません。最後に、(約束)、あなただけのRegExpプロトタイプの文字列、「.TEST()」メソッドに対して正規表現をテストしている場合は、もう少し効率的です。

if (regex.test(input.value)) { // matched 
    // ... 
} 
+0

オランダの口座番号は認識されません。 –

+0

私は最初の数字は3桁であると信じています。それ以外は、正しいです。もう1桁を追加すると合計で10^10(= 1,000万)の組み合わせがあります。 – EdoDodo

+0

Saeedオランダのアカウント番号は実際に私の答えのサンプル番号のように見えますか?@ EdoDodoが正しい場合、正規表現は正しくなく、最初の「[0-9]」の後の「{2}」は「{3}」になります... – Pointy