如何限制字符串中允许的字符?

时间:2017-04-27 13:59:51

标签: c# string

我目前正在c#中创建一个包含名字,姓氏,用户名和电子邮件的用户类。

用户名只能包含数字[0-9],小写字母[a-z]和下划线'_'

电子邮件只能包含[a-z],[A-Z],[0-9],以及点'。',逗号',',下划线'_'和连字符' - '

如何将这些限制设置为c#中的字符串?

2 个答案:

答案 0 :(得分:0)

您可以在属性的setter中执行此逻辑。 例如:

private string _firstName;
    public string FirstName
    {
        get { return this._firstName; }
        set
        {
            if (Regex.Match(value, YOUR_REGEX).Success)
                this._firstName = value;
        }
    }

答案 1 :(得分:0)

听起来这个项目的目标是让您了解如何使用正则表达式。包含常见模式和测试的良好在线资源位于Regular Expression Library

您拥有的简单电子邮件验证要求也可以通过RegEx完成,但实际上是不正确的,因为它将允许无效地址通过;逗号可以在电子邮件地址中,但需要引用您的模式不允许的引号。电子邮件地址的 local 部分的规范可能是互联网上实施最差的标准之一。

为了将来参考,在.Net中检查电子邮件地址的作弊是使用MailAddress命名空间的System.Net.Mail类。您可以使用try...catch例程查看是否可以转换提交的地址。要知道使用它的唯一问题是它将允许大多数人不会认为有效的地址,即使它们是有效的;例如没有扩展名的服务器名称(.com等)。

private bool isValidEmail (string emailAddress) {
    bool ReturnValue;

    try {
        MailAddress ma = new MailAddress(emailAddress);
        ReturnValue = true;
    }
    catch (Exception) { ReturnValue = false; }

    return ReturnValue;
}
相关问题