我正在使用以下代码"继续"用于查看电子邮件地址文本字段的按钮。
If Regex.IsMatch(txtEmail.Text, "^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@)) (?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$",
(RegexOptions.IgnoreCase)) Then
pnlInvalidEmail.Visible = False
Else
pnlInvalidEmail.Visible = True
Exit Sub
End If
我遇到的问题是正则表达式(从here收缩)正在检查文本框,但没有任何内容通过检查。无论我在文本字段中输入什么内容,它都会检查失败并显示我的警告面板。
我哪里错了?除了尝试使用正则表达式验证电子邮件?
答案 0 :(得分:3)
答案 1 :(得分:1)
试试这个..
"^[_a-z0-9-]+(.[a-z0-9-]+)@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"
答案 2 :(得分:0)
必须是自定义电子邮件正则表达式。我不会试图给你一个更好的, 但会尽力帮助你理解为什么它不会让任何事情发生。
如果你专注于这一部分
你可以看到问题。基本上这个断言(?<= [0-9a-z] )
只允许一个表格 -
一个alphanum char然后是@符号。
| (?:
(?:
[0-9a-z]
(?:
(?:
\.
(?! \. )
)
| [-!#\$%&'\*\+/=\?\^`\{\}\|~\w]
)*
)
(?<= [0-9a-z] )
@
)
显然,从正则表达式条件来看,它们也允许匹配".."@
和[..]@
。
只使用另一个香草正则表达式就不允许这样做。