2017-08-01 48 views
2

私はオンラインツールを使用してコンテストを作成しています。賞品を送るには、ユーザーの情報(姓、名、住所、...など)を求めるフォームがあります。正規表現の正規表現の正規表現

正規表現を使用してこのフォームに入力したデータを検証するオプションがあります。

私はストリートナンバー(私はベルギーに位置しています)に配置する正規表現に苦労しています。

通りの番号は、次のことができます。

1234 
1234a 
1234a12 

が数(最大4桁) で始まるだけでなく(最大2文字)の文字を持つことができます は(文字(S)の後に番号を持つことができますMAX3)

は、私は次の式を思い付いた:

^([0-9]{1,4})([A-Za-z]{1,2})?([0-9]{1,3})?$ 

しかし、問題は、文字と数字の第二部としてOPTIOであるということですそれは最適ではない8桁までの数字を入力することを可能にします。

1234(第一グループ)(第2グループの無文字)5678(第3グループ)

あなたのいずれかが期待される結果を達成するためにどのように私を傾けることができれば、それをいただければ幸いです!

+0

回答を選択した場合は、上と下の三角形のデジタルマークの下にあるチェックマーク付きの回答としてマークしてください。そしてhm ...受験の前に、***テスト***してください。 ... – Gangnus

+1

初めての非常に良い質問です。ようこそ! – Gangnus

答えて

0

あなたは、この正規表現を使用する場合があります:

^\d{1,4}([a-zA-Z]{1,2}\d{1,3}|[a-zA-Z]{1,2}|)$

場所:

\d{1,4} - 1-4桁

([a-zA-Z]{1,2}\d{1,3}|[a-zA-Z]{1,2}|) - 1 -

[a-zA-Z]{1,2}\d{1,3}ことができるオプションのグループ、 -2文字+ 1〜3桁

又は

[a-zA-Z]{1,2} - 1-2文字

又は

empty

0
\d{0,4}[a-zA-Z]{0,2}\d{0,3} 

\d{0,4}最初のグループについては、最大4桁

[a-zA-Z]{0,2}第GROUPEと番号と一致charと2桁の数字をマッチさせる最大

\d{0,3}は、最初のグループについては、例えば3桁最大

0

あなたは秒でない場合、最後の1つが存在することができない、一緒に最後の2つのグループを維持する必要があり、と番号と一致します

^\d{1,4}(?:[a-zA-z]{1,2}\d{0,3})?$ 

または少し最適化された(しかし、少しより良いアプローチを示す)

^\d{1,4}(?:[a-zA-z]{1,2}(?:\d{1,3})?)?$ 

あなたは私はあなたがキャプチャグループを必要としないことを前提とし、それらを交換し、検証のためにこれを使用していると非捕捉のもので。

先頭のゼロチェックを[1-9]\d{0,3}に変更して、先行ゼロを許可しないことをお勧めします。

0

ありがとうございました! ?

^\ dの{1,4}(:?[a-zA-Z]の{1,2} \ dの{0,3})$

をそして、それは同じように動作し、私はセバスチャンのソリューションを試してみました魅力!私はまだ ":"が何を表しているのかはまだ分かっていませんが、次回はRegexを試してみる必要があります。

は良い一日を、

スタン

+0

余分な回答をすることは、答えを記す正しい方法ではありません。あなたの答えを削除してください。 – Gangnus

0

最初の数字は、番号の前と後に他のシンボルがあるべきではありません0
することはできません。だから、

^[1-9]\d{0,3}(?:[a-zA-Z]{1,2}\d{0,3})?$ 

:?組み合わせは()の建設が一致するサブストリングを作成しないことを意味します。

Hereは、テストの正規表現です。