我们正在ASP.NET中使用以下内容进行电子邮件验证:
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
如何修改代码来忽略前导和尾随空格?
实际的修剪在 postback 代码中处理,但如果用户因复制粘贴而多了一个空格,则验证器会触发为无效。
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
如何修改代码来忽略前导和尾随空格?
实际的修剪在 postback 代码中处理,但如果用户因复制粘贴而多了一个空格,则验证器会触发为无效。
您可以在模式前后放置\s*
,这样它应该可以正常工作。
\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*
- Vaibhav Garg\s*(?<email>\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*)\s*
<asp:RegularExpressionValidator>
一起使用。请改用 \s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*
。 - Vaibhav Garg在将其传递给验证器之前,请先进行裁剪。
<asp:TextBox runat="server" ID="EmailAddress" />
<asp:RegularExpressionValidator ValidationExpression="\s*\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*\s*" runat="server" ControlToValidate="EmailAddress" Text="*" ErrorMessage="Email is not valid" />
"some@one.com"
" some@one.com "
"so_me@one.co.uk"
" a.s-d__+f@asd.as.as "
请确保您的代码中去除了空格,像这样:
VB Dim Email as string = EmailAddress.Text.Trim()
C# string Email = EmailAddress.Text.Trim();
我本来想把这个问题简单地回答一下,但实际上你的问题的真正答案是没有答案。
为什么呢?
因为任何带有空格或空白字符的电子邮件地址都是无效的电子邮件地址。
例如,如果您尝试将一个带有空格字符的电子邮件地址传递到 SMPTP 控件中并尝试发送它,它将失败!
所有电子邮件地址都必须从这个正则表达式的角度进行验证...
\w+([-+.']\w+)@\w+([-.]\w+).\w+([-.]\w+)*
或者甚至是这个
/.+@.+/
任何其他的都是无效的电子邮件地址。
真正的解决方法是在将字符串传递到电子邮件控件之前对其进行TRIM()处理。
只是提醒你。