3

名前の正規表現を作成しようとしています。名前は必要に応じて役職 (Dr.、Mrs. など) で始めることができ、それ以外の場合は 2 つまたは 3 つの名前を含み、ミドル ネームはオプションで (X.) の形式で省略されます。

たとえば、次の名前が一致する必要があります。

  • ジェフ・T・ウォーカー博士
  • スーザン・B・アンソニー
  • マイケル・ビンガムトン氏
  • ジョージ・ブッシュ夫人

以下は一致してはなりません

  • ガーフィールド
  • J博士
  • T.ペイン
  • アメリカ合衆国
  • 2020年2月15日

ここに私が持っているものがあります:

^(Dr\.|Mr\.|Mrs\.)?[A-Z][a-z]+\s([A-Z][a-z]+|[A-Z]\.)\s[A-Z][a-z]+?

ここでどこが間違っているのかよくわかりません。

4

1 に答える 1

3

^((Dr|Mr|Mrs)\. )?[A-Z][a-z]+( [A-Z]([a-z]+|\.))? [A-Z][a-z]+

これは私がそれを修正するためにしたことです:

  • プレフィックスの後にスペースを追加しました-以前は、「Dr.James」ではなく「Dr.James」のようなものと一致していました
  • 最後の名前の後ろの疑問符を削除しました-括弧の後にない場合は?、「レイジーマッチング」になります-できるだけ少ない文字(この場合は1)に一致します
  • ミドルネームをオプションにしました
  • 一部の冗長性(プレフィックスやミドルネームなど)を削除しました
  • スペースに置き換えられまし\sた-読みやすく、\sはタブや改行などに一致します。
于 2013-03-05T19:31:45.013 に答える