2012-02-27 22 views
1

正規表現を使用して姓と名字の入力を検証するasp.netコントロールがあります。これは最大40文字まで使えます...そして、私は表現の見た目で、「O'Donaldのような名前や多分ハイネンテッドな名前も許します。ASP.netバリデーターの正規表現とアクセント付きの名前/アクセント

ValidationExpression="^[a-zA-Z''-'\s]{1,40}$" 

私の問題はアクセント付きの名前/文字です。例えばスペイン語やフランス語の名前は許可されません。これを考慮に入れて私の表現を変更する方法を誰かが知っていますか?

答えて

7

あなたは

\ pを{L}たい:任意の言語からの手紙の任意の種類を。 regular-expressions.info

\p{L}または\pLから

は、プロパティ "手紙" を持っUnicodeのテーブル内のすべての文字です。したがって、ユニコードテーブルのすべての文字と一致します。

あなたが好きなキャラクターのクラス内でこれを使用することができ、この

ValidationExpression="^[\p{L}''-'\s]{1,40}$" 

ワーキングC#のテストは:

String[] words = { "O'Conner", "Smith", "Müller", "fooñ", "Fooobar12" }; 

foreach (String s in words) { 

    Match word = Regex.Match(s, @" 
             ^     # Match the start of the string 
              [\p{L}''-'\s]{1,40} 
             $      # Match the end of the string 
             ", RegexOptions.IgnorePatternWhitespace); 
    if (word.Success) { 
     Console.WriteLine(s + ": valid"); 
    } 
    else { 
     Console.WriteLine(s + ": invalid"); 
    } 
} 

Console.ReadLine(); 
+0

私はまだこれを試す時間がなかったが、私はそれを行くを与えると、フィードバックを提供します。それは私には意味があるので、あなたの助けに感謝します。 – bobbo

+0

私はこれを試しましたが、たとえñを含む最初の名前を入力しても機能しない場合は、まだ失敗しているようです。さらに悪いことに、英語での通常の名前は許可されていませんか?私は混乱しています。 – bobbo

+0

私はasp.netでテストすることはできませんが、C#で作業しているので、正規表現はOKであるはずです。 – stema

関連する問題