6

「Johnson」、「Del Sol」、または「Del La Range」に一致する C# の正規表現が必要です。つまり、中間にスペースがあり、先頭または末尾にスペースがない単語に一致する必要があります。

4

7 に答える 7

5
^\p{L}+(\s+\p{L}+)*$

この正規表現には次の機能があります。

  • 1 文字の姓に一致します (例: Malcolm X の姓)
  • 数字を含む姓には一致しません (a\wまたは[^ ]will のあるものなど) 。
  • ユニコード文字に一致

しかし、「O'Connor」やハイフンでつながれた姓などの姓はどうでしょう...うーん...

于 2009-03-10T21:33:49.033 に答える
3

これは仕事をするはずです:

^[a-zA-Z][a-zA-Z ]*[a-zA-Z]$

編集:これは、名前に後者の名前とハイフン/アポストロフィを許可するわずかな改善です。

^[a-zA-Z'][a-zA-Z'- ]*[a-zA-Z']?$
于 2009-03-10T21:26:39.330 に答える
0

? 修飾子はあなたの友達です。貪欲なマッチではなく、可能な限り最短のマッチを行います。次のように、名に使用します。

^(.+?) (.+)$

グループ 1 は最初のスペースまですべてを取得し、グループ 2 は残りを取得します。

もちろん、名にスペースが含まれている場合はどうしますか?

于 2009-03-10T21:21:33.727 に答える
0

これはより良いものです:

/^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/

標準の句読点とスペースを使用できますが、句読点で始めることはできません。

于 2012-05-10T16:31:54.387 に答える
0

次のようなことを試してください:

^[^\s][\w\s]*[^\s]$
于 2009-03-10T21:25:20.630 に答える
-1

これはあなたが探していたものだと思います:

^[^ ][a-zA-Z ]+[^ ]$

これは、スペース、英字またはスペースなしで行頭と一致し、最後にスペースがない必要があります。

これは irb で動作しますが、前回 C# を使用したときは、同様の正規表現を使用しました。

(ゼロは良い、nil は失敗を意味する)

>> "Di Giorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
>> "DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
>> " DiGiorno" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> nil
>> "DiGiorno " =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> nil
>> "Di Gior no" =~ /^[^ ][a-zA-Z ]+[^ ]$/
=> 0
于 2009-03-10T21:35:16.313 に答える