2016-11-25 6 views
0

私はEUの銀行口座のHTMLフォームに正規表現をバインドしようとしています。これまでのところ、私はそれをつなぎ合わせることができました:HTMLの正規表現のスペース

pattern="[A-Z]{2}[000000000-999999999]{9} 

を例UK123456789

ために何かを通過させますが、私もそれは私が行くにはどうすればよいUK12 2345のために6789

を渡すようにしたいですそれらのプレースメントで正確にスペースを受け入れることについて

+0

'[000000000から999999999] {9}' [0-9] 'のようなものである{9}' – Oriol

答えて

2
pattern="[A-Z]{2}[000000000-999999999]{9}" 

これだけ誤ってあなたが望むことをしません。 ([000000000-999999999]は、この文字が0または0または0か... 0-9または9または9か... 9の範囲の文字でなければなりません」と言う。)の適切な形式は次のとおりです。

pattern="[A-Z]{2}[0-9]{9}" 

またはより正確に:

pattern="[A-Z]{2}\d{2}\s?\d{4}\s?\d{4}" 

pattern="[A-Z]{2}\d{9}" 

今、私たちは、より合理的な何かを持っていることを、我々はにそれを拡張することができます

これは、特定の場所でオプションの空白を許可します。

あなただけのスペースではなく、任意の空白文字許可したい場合は、あなたができる:

pattern="[A-Z]{2}\d{2} ?\d{4} ?\d{4}" 
+0

これは動作しませんか? '' UK 123456789'.match(/ [A-Z] {2}?\ d {9}/g); '読みやすく、正規表現はよくわかりません。 –

+0

@JaredFarrishその式は確かにその文字列と一致しますが、その文字列はOPが望む形式ではありません。また、最初の一致のみが必要と思われるので、 'g'は不要です。 – Ouroborus

+0

OPが望んでいた点では、どのような形が見当たりませんか? –

0

\s?を使用してオプションの空白を許可することはできますが、正規表現は少し長くなります。正規表現の下に空白の有無にかかわらず両方(DEMO

\w{2}\d{2}\s?\d{4}\s?\d{4} 

許可しかし、欧州のIBANが長く、あなたが投稿したものよりもあることを承知しているであろう - 私はそれが英国にあるかどうかはわかりませんけれども。

-1

スペースがどこにあるか、あなたは限り9つの数字があるとして、あなたがチェックする前に、すべてのスペースを削除することができ、気にしない場合:

str = 'UK12 234 56789'; 
 
strToCheck = str.replace(/ /g, ''); 
 
validStr = strToCheck.match(/[a-zA-Z]{2}\d{9}/); 
 
if (validStr) { 
 
    console.log('Valid'); 
 
}

+0

私はOPが特定の場所のスペースを検証したいと思うことに気付きました。この場合、上記の私の答えは正しくありません。文字列内の任意の場所のスペースで検証されるためです。実際には、十分な文字と数字があれば、予期せぬ場所にスペースがあると検証する価値がないのはなぜか分かりません。 – sideroxylon

関連する問題