【问题标题】:ASP.net validator regular expression and accented names / charactersASP.net 验证器正则表达式和重音名称/字符
【发布时间】:2012-02-27 12:07:37
【问题描述】:

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

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

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

【问题讨论】:

    标签: asp.net .net regex


    【解决方案1】:

    你想要的

    \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();
    

    【讨论】:

    • 我还没有时间尝试这个,但我会试一试并提供反馈。不过这对我来说很有意义,所以谢谢你的帮助。
    • 我试过这个,但它似乎仍然失败,例如,如果我输入包含 ñ 字符的名字不起作用。更糟糕的是,普通的英文名字是不允许的?我很困惑。
    • 我无法使用 asp.net 对其进行测试,但它可以在 c# 上运行,所以我想说正则表达式应该没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多