【问题标题】:Test if the user typed email format ASP.NET (VB)测试用户是否键入了电子邮件格式 ASP.NET (VB)
【发布时间】:2010-06-19 14:27:07
【问题描述】:

我有一个TextBox,我想强制用户在此字段中输入电子邮件格式,例如 (example@mail.com)?

我不想使用FilteredTextBoxExtenderRegularExpressionValidator

我想做manualy

【问题讨论】:

  • 验证一个字符串是一个有效的电子邮件地址真的很难。您可能不会考虑许多有效的电子邮件地址。
  • 让我们考虑一下examle@gmail.com。我该怎么做???!!!
  • 最好的方法是使用正则表达式。任何其他方式都非常困难。

标签: asp.net vb.net email textbox


【解决方案1】:

使用 System.Net.Mail 的 MailAddress 类。如果您传入的不是有效的电子邮件地址,它将失败。

例子:

How do I validate email address formatting with the .NET Framework?

【讨论】:

    【解决方案2】:

    你真的要重新发明轮子了。 但如果这是您的意愿,您必须使用 String 对象中内置的字符串操作函数。

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

    使用String.Contains 进行检查。

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

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

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

    获取 @ 符号和 .符号并检查其间是否至少有 3 个字符。

    我似乎真的想不出所有的可能性,但首先列出所有的可能性,并一一检查。

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

    编辑:String.LastIndexOf 将返回找到指定字符的最后一个索引;)

    然后你计算并检查@符号是否被发现不止一次等

    String.IndexOfAny(Char[])

    String.IndexOfAny Method (Char[], Int32)

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

    【讨论】:

    • 首先,如果您要寻找基本模式,只需使用正则表达式。检查索引位置的所有这些业务听起来像是生成非常长的函数的好方法。但是,诸如“检查 [@ 和第一个 .] 之间是否至少有 3 个字符的规则已经无效。x@aa.com 很可能是美国航空公司实际员工的地址,例如.
    • 我使用正则表达式进行验证:) 只是他特别需要手动进行。中间的 3 个字符只是一个例子。他应该使用这些方法+他自己的规则并测试字符串是否满足他的所有规则;)他想手动完成:)
    【解决方案3】:

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

    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}))$")
    

    谢谢。

    【讨论】:

      猜你喜欢
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      • 2016-07-23
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      相关资源
      最近更新 更多