0

正規表現を介した言語固有のバリデーターに興味があります。次のようなパターンで、任意の言語で人の名前を検証できることを知っています。

“[\p{L}\p{M}]”

しかし、特定の言語の検証を行う場合はどうなりますか?私のスレッドのCurrentUICultureまたはCurrentCulture設定が、の意味"[\w]"をドイツ語、スペイン語、英語、特に中国語に適したものに単純に変換するのであれば、それは素晴らしいことです。それはそのように機能しますか?はいの場合、これはおそらく私の答えです。

そうでない場合、私の次の関心は正規表現スクリプト注釈を使用することです。しかし、私はそれに気づきます:

  1. そのリンクにあるリストには、私が特に興味を持っている簡体字の「中国語」は含まれていません。
  2. .NET正規表現機能がスクリプトベースのマッチングをサポートしているとは思いません。はい?いいえ?

したがって、前の2つのオプションを機能させることができない場合の最後のオプションは、名前付きブロックを使用することです。少なくとも.netでサポートされている名前付きブロックのリストには、CJKのいくつかのエントリが含まれています。いくつかのCJKブロックを単純に組み合わせて、それを(簡体字)「中国語」と呼ぶことができると思います。

考え?

4

1 に答える 1

0

.net設定では、CurrentUICultureに敏感な正規表現のようなものはないと結論付けました。また、最も寛容な合理的なシナリオは、すべての言語に同時に適用できる検証を実行することであると結論付けました。これは、印刷不可能な文字、「絵記号」、山かっこ(マークアップの挿入を防ぐため)、および数学記号のすべての形式を単純に拒否します。 :

@”^[^\p{C}<>\p{Sm}\p{So}]*$”

中程度の許容範囲のアプローチは、西洋と東洋の両方の文字セット(発音区別符号と「結合文字」を含む)を明示的にキャプチャする文字列を使用することです。

@"^[\p{L}\p{M}\p{Pd}\p{Pi}\p{Pf}\s]*$"

西洋の文字だけが必要な場合、最も許容度の低いアプローチは次のとおりです。

@"^[\p{IsBasicLatin}\p{IsLatin-1Supplement}\p{Pd}\p{Pi}\p{Pf}-[\p{N}]]*$"

上記では、すべての形式の引用符を引き続き使用できます。これは通常、O'Tooleなどの名前に適用されます。

于 2012-06-06T13:33:50.097 に答える