ASP.net验证器正则表达式和带重音的名称/字符

时间:2012-02-27 12:07:37

标签: asp.net .net regex

我有一个asp.net控件,它使用正则表达式来验证用户输入的名字和姓氏。它适用于多达40个字符......我认为通过表达式的外观,它也允许'像O'Donald这样的名字,也可能是夸张的名字。

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

我的问题是带有重音的名字/字符,例如不允许包含例如ñ的西班牙语和法语名称。有谁知道如何修改我的表达式以考虑到这一点?

1 个答案:

答案 0 :(得分:7)

你想要

  

\ p {L}:任何语言的任何一种信件。

来自regular-expressions.info

\p{L}\pL是unicode表中具有"字母"属性的每个字符。所以它将匹配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();