我目前正在c#中创建一个包含名字,姓氏,用户名和电子邮件的用户类。
用户名只能包含数字[0-9],小写字母[a-z]和下划线'_'
电子邮件只能包含[a-z],[A-Z],[0-9],以及点'。',逗号',',下划线'_'和连字符' - '
如何将这些限制设置为c#中的字符串?
答案 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;
}