我希望验证电子邮件输入字符串,因此它是有效的电子邮件。我希望检查电子邮件字符串的长度,因此它不超过60个字符。 我正在使用RegularExpressionValidator ..我有两个,一个用于验证电子邮件模式,另一个用于验证长度。但这似乎不起作用。我可以一次使用一个没有问题,但是如果我同时使用它们,它们都会在没有错误的地方显示错误。
这些可以合并吗?或者是否有更好的regualexpression同时验证电子邮件和长度?
控制:
<%-- Validate EmailAddress --%>
<asp:RequiredFieldValidator ID="EmailAddressRequiredFieldValidator" runat="server"
ErrorMessage="..." ControlToValidate="EmailAddressInsertTextBox" Display="None" ValidationGroup="InsertValidationGroup" />
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="EmailAddressInsertTextBox" ErrorMessage="......" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" Display="None" ValidationGroup="InsertValidationGroup" />
<asp:RegularExpressionValidator ID="EmailAddressRegularExpressionValidator2" runat="server" ControlToValidate="EmailAddressInsertTextBox" ErrorMessage="..............." ValidationExpression="^[\w\s]{1,60}$" Display="None" ValidationGroup="InsertValidationGroup" />
答案 0 :(得分:1)
我不是说这是最好的方法,但是如果你想要结合两个正则表达式,你通常可以选择positive lookbehind。
下面的代码由一个字段值匹配,该字段值从头到尾包含1-60个字符。 lookbehind确保该值与您的电子邮件模式匹配,可选地在空格之前和之后:
ValidationExpression="^.{1,60}$(?<=\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*)"
答案 1 :(得分:0)
没有真正的理由这不起作用。最佳做法是单独应用它们,以便针对不同的问题分别提供两条错误消息。
有一个例子,两个在同一个控件上一起工作,在这里:http://www.informit.com/articles/article.aspx?p=101137&seqNum=3(参见“清单3.6”)
也许如果你提供你的代码,它可能会成为别的东西。
修改:我尝试了您提供的代码。我将长度验证器正则表达式更改为^.{1,60}$
,它对我有用。我也将显示更改为动态,所以我可以测试它,但这不会改变Page.IsValid的结果。
答案 2 :(得分:0)
我相信Regex Validator只会在字段中有文字要查看时触发。您需要额外的验证器,这是asp:RequiredFieldValidator
<asp:RequiredFieldValidator runat="server" ControlToValidate="txtEmail" ErrorMessage="You must input an email address" />
让我们通过创建javascript函数并在我们的验证器中调用它来使其更加简单
function validateEmail(email) {
var regex = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
// 60 char check
return email.length <= 60 && regex.test(email);
}