我有一个文本框,用户可以在其中输入他们的电子邮件地址。我需要阻止人们使用某些电子邮件地址,因为这是为了企业(B2B)使用。
任何人都可以帮我处理RegEx,如果电子邮件地址包含@gmail或@yahoo会返回false吗?
到目前为止,我有这个(感谢@Sabuj)@(yahoo|gmail)\.
但是当放入RegularExpressionValidator时它不起作用:
<asp:RegularExpressionValidator ValidationExpression='@(yahoo|gmail)\.' runat="server" ControlToValidate="txt_email" />
阅读MSDN以获取更多信息后,我也尝试了这一点,但无论输入内容如何,它仍然会返回true:
<asp:RegularExpressionValidator ValidationExpression='^(@(yahoo|gmail)\.)$' runat="server" ControlToValidate="txt_email" />
答案 0 :(得分:2)
使用此:
<asp:RegularExpressionValidator ValidationExpression=".*@(?!(yahoo|gmail)).*" ControlToValidate="txt_email" runat="server" ErrorMessage="Yahoo and Gmail disallowed"></asp:RegularExpressionValidator>
验证表达式属性应设置为与整个字符串匹配。
但我的正则表达式.*@(?!(yahoo|gmail)).*
与整个电子邮件相匹配。所以它有效:)
您不需要^
或$
,因为字符串将是一行。
另外,请不要忘记将type="email"
添加到txt_email
。它会自动处理是否是有效的电子邮件。
如果出现错误消息,则它无效,但如果没有出现,那么它绝对有效。
答案 1 :(得分:1)
您可以使用此正则表达式检查上述电子邮件是否包含:
@(gmail|yahoo|mailinator|guerrillamail|dispostable)\.
答案 2 :(得分:1)
由于电子邮件地址的语法复杂(比大多数人认为的更复杂,例如,它们可以包含注释[RFC822§3.4.3]),我建议不要使用正则表达式。相反,使用“适当的”电子邮件解析器,然后向解析器询问地址的域部分。
答案 3 :(得分:1)
我想出了^.*@(?!(yahoo|gmail)).*$
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationExpression="^.*@(?!(yahoo|gmail)).*$" runat="server" ControlToValidate="txt_email" Text="No free email accounts allowed" />
这将允许任何文本传递不包含@yahoo
或@gmail
的验证程序。
不要忘记在后面的代码中查看Page.IsValid
,并在<asp:ValidationSummary runat="server" />
中添加.aspx
。