2017-04-20 6 views
2

と名の正規表現、ユーザーが名前を入力します。私は、ユーザーがすなわち「ジョン・ブランデー」または「ジョン・ブランデー・ポール」のみ2または3ワードを入力することができます正規表現を設定します。そして各単語は2以上で15文字以上です。C#の:私のC#のアプリで2および/または3つのワード

Match match = Regex.Match(str, @"^[A-Z]+ [A-Z]+ [A-Z]+$", RegexOptions.IgnoreCase); // @"^\b[a-zA-Z]{2,15}\s[a-zA-Z]{2,15}\b"); //@"(\w)\s(\w){2, 3}"); 
Console.WriteLine("PAttern Success = " + match.Success); 

現在のパターンでは、3単語を入力する必要があります。

答えて

4

quantifiedgroupを使用するためのもう一つのアイデア。

^(?:[A-Z]{2,15}\b ?){2,3}$ 
  • word boundaryのためのあなたのRegexOptions.IgnoreCase
  • \bスタンドで使用します。

See demo at regex101

スペースlike this demoで終わる禁止する$前に別の\bを追加します。

+0

ニース、コンパクトで\ s問題を解決しました。 – jk121960

+0

ありがとうございました。完璧に動作します。あなたが共有したリンクは、パターンをオンラインで試して結果を見るのに役立ちます。 –

+0

あなたは@TruptiDaliaを歓迎します! –

2

あなたのコメント内のパターンと一緒に、ゼロと一度に一致するように?を使用することができます。

^[a-zA-Z]{2,15}\s[a-zA-Z]{2,15}(?:\s[a-zA-Z]{2,15})?$ 

Live Demo

さらに?:は、それが非キャプチャグループであることを伝えます。あなたの代わりに[ \t]が必要になる場合がありますので

\sことも、改行にマッチします。複数のスペースを許可する場合は、[ \t]+を使用します。

1

は、それが動作するはずこれを試してみてください。

^[a-zA-Z]{2,15}\s([a-zA-Z]{2,15}\s)?[a-zA-Z]{2,15}$

+0

これは1文字の名前と15文字以上の名前を許可します(要求OPの1つが指定されています) –

+0

残念ながら、アルファクラスの後にプラス{ – jk121960

関連する問題