2010-06-19 61 views
0

我有一个TextBox,我想强制用户在这个字段中输入电子邮件格式,如([email protected])?我不想使用FilteredTextBoxExtenderRegularExpressionValidator测试用户是否输入电子邮件格式ASP.NET(VB)

我想要做manualy

+2

验证字符串是否为有效的电子邮件地址非常困难。有许多您可能不会考虑的有效电子邮件地址。 – 2010-06-19 14:29:29

+0

让我们考虑一下[email protected]。我怎样才能做到这一点 ???!!! – 2010-06-19 14:33:21

+0

最好的方法是使用RegEx。任何其他方式是非常困难的。 – 2010-06-19 14:42:01

回答

0

你真的要重新发明车轮。 但是,如果它是你的愿望,你必须使用内置在String对象中的字符串操作函数。

首先检查文本中是否有in @符号。

使用String.Contains来检查。

或者您可以使用String.IndexOf来检查@符号是否存在,以及是否存在它存在的索引。 (将字符串视为字符数组)

然后检查@符号前是否存在任何(以及多少)字符。 如果符号@符号在第四个索引中,那么您知道之前有3个字符等。

There's plethora of functions for the String object。您可能不得不使用Length函数和String.SubString来检索字符串的部分。

获取@符号和。的索引。符号并检查两者之间是否至少有3个字符。

我真的不能想到所有的可能性,但首先列出所有的可能性,并逐一检查它们。

您也可以使用包含方法来检查非法字符是否存在:)

编辑:String.LastIndexOf将返回其中一个指定的字符被发现的最后一个索引;)

你算和检查@符号是否找到了不止一次等

String.IndexOfAny(Char[])

String.IndexOfAny Method (Char[], Int32)

String.IndexOfAny Method (Char[], Int32, Int32)

+0

首先,如果您打算寻找基本模式,只需使用正则表达式即可。所有这些检查指数头寸的业务听起来都是生成非常长的函数的好方法。但是,像“检查[@'和第一个'.']之间是否至少有3个字符的规则已经无效了。'x @ aa.com'很可能是美国实际员工的地址航空公司,例如 – VoteyDisciple 2010-06-19 14:55:26

+0

我使用RegularExpressions进行验证:)这只是他特别需要手动完成的,而其中的3个字符只是一个例子,他应该使用这些方法+他自己的规则并测试字符串是否满足他所有的规则;)他想手工做到这一点:) – 2010-06-19 15:07:14

0

这是我网上找到的最好方式。

Regex.IsMatch(YourStringEmail, "^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))" + _ 
        "(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$") 

谢谢。

相关问题