2016-12-08 16 views
0

電話番号を検証する必要があります。内部に任意の記号を含む正規表現

Have + sign at start 
+79231112233 
Dont have + at start 
79231112233 
Have spaces 
7 9231112233 
7 923 1112233 
7 923 111 22 33 
Have dashes/spaces 
7-923-111-22-33 
7 923-111-22-33 
7 923 111-22-33 
Mixed 
+7-923-111 22 33 

正規表現を使用することは可能ですか?

+2

、必要に応じてスペースやハイフンが続いている10個のまたは数字を強制しますあなたのための正規表現を書く誰か。 – georg

答えて

2

はい。最も単純な、ほとんどの木びき台のための強打が、ほとんど完璧な、正規表現は、このようなものになるだろう:

^\+?[0-9- ]+$ 

欠点は、それがすべてのダッシュやすべてのスペースを受け入れるだろうということです。

+0

はオンラインテスターで試してみましたが、プラスの検証でいくつかの問題があると思われます。(プラスは有効ではありません。^ [0-9-] + $ –

+0

@AlexeyKバックスラッシュでプラス記号をエスケープする必要がありますその答えは最初にバックスラッシュ(コードブロックなし)を表示しませんでしたさらに、少なくとも ''^\ +?\ b [\ d - ]という単語境界を追加することができます。 + $ '](https://www.regex101.com/r/ojf4qD/1) –

+0

これは' -'またはスペースだけを含む行と一致します – anubhava

1

\+は追加

\+?

+リテラル 'にマッチします?' '+'が発生しないか一度発生したときにマッチするオプションです。

[ -]スペースまたは ' - 'のいずれかの文字に一致します。最後に疑問符を追加して(上記のように)オプションにすることができます。

\d試合1桁([0-9]のように記述することができる)

\d{3}マッチは正確に3桁

これは、あなたがあなたの目的のために働く正規表現を構築するための十分な情報でなければなりません。正規表現の詳細については学ぶ必要がありますが、あなたはその短所を認識しています。

2

オプションの+を最初に一致させ、数字の間にスペース/ハイフンを付けること以外に、電話番号には最小桁数(例えば、あなたの与えられた例に従って10

あなたが上記の条件満たすためにあなたの例については、この正規表現を検討することができ

\+?(?:\d[ -]?){10,} 
  • (?:\d[ -]?){10,}は、あなたの質問は、あなたが望むように見える
関連する問題