问题描述: 写一个验证Email的正则表达式,但不可以是c.com作为域名。
符合:^[\w\._-]+\@[\w_-]+\.[\w\._-]+$
不允许@c.com
或者@*.c.com
解决方法:
貌似正则表达式中只有'|'(Or),没有 与关系,所以只好同时用2个正则表达式的Validator控件(.net)
msdn查到:非匹配用(?!pattern)
网上查到: 匹配非“非内容”的行的表达式应该写成:^(?!.*非内容).*$
所以,粘贴源代码如下:
<asp:TextBox ID="txtEmail" runat="server" CssClass="width120" MaxLength="50"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvEmail" runat="server" ErrorMessage="RequiredFieldValidator"
ControlToValidate="txtEmail" Display="Dynamic" >Email不能为空 </asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revEmail" runat="server" ErrorMessage="RegularExpressionValidator"
ValidationExpression="^[\w\._-]+\@[\w_-]+\.[\w\._-]+$"
ControlToValidate="txtEmail" Display="Dynamic" >Email地址格式不正确</asp:RegularExpressionValidator>
<asp:RegularExpressionValidator ID="revEmail2" runat="server" ErrorMessage="RegularExpressionValidator"
ValidationExpression="^[\w\._-]+@(?!.*(\.c\.com)|(c\.com)).*$"
ControlToValidate="txtEmail" Display="Dynamic" >Email地址不可以是@c.com或者@*.c.com</asp:RegularExpressionValidator>
测试,通过。