嘿伙计们我正在研究webmatrix中的一个项目,该项目要求用户注册详细信息。第一个框是他们的电子邮件地址。基本上我需要帮助确定正则表达式。
我在主文件夹中有一个名为validation.cshtml的文件,其中包含以下功能:
@functions {
public static bool IsValidEmail(string value)
{
const string expression = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
return Regex.IsMatch(value, expression);
}
}
然后我在register.cshtml页面中调用该函数,但这里是我出错的地方。我不知道如何编写该函数。这就是我所拥有的
if (!Validation.IsMatch(email))
{
ModelState.AddError("email", "The Email Address Must contain the @ sign");
}
我有"电子邮件"这是因为这是电子邮件文本字段的变量名称。
答案 0 :(得分:1)
如果您使用MVC,则无需为电子邮件地址编写自己的验证。在模型类中为您的属性添加Datetype属性。
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
在视图中添加validationmessage。
@Html.ValidationMessageFor(x => x.Email)
就是这样。
希望能满足您的需求!
答案 1 :(得分:0)
如果您想验证字符串是否可以用来发送电子邮件,那么您就不需要正则表达式。这样就可以了:
@functions {
public static bool IsValidEmail(string value) {
try{
MailAddress email = new MailAddress(value);
return true;
}
catch(FormatException fex){
return false;
}
}
}
您可能需要添加
using System.Net.Mail;
到文件的顶部。
函数应位于App_Code文件夹中的cshtml文件中,以便网站中的任何文件都可以使用它们。否则,它们的范围受限于它们所在的文件。如果将Validation.cshtml文件移动到App_Code(您可能需要先创建该文件夹)并将其重命名为MyValidation.cshtml以防止与ValidationHelper类冲突,打电话给这个方法就是这个:
if(!MyValidation.IsValidEmail(email)){
ModelState.AddError("email", "BOOOM!");
}