2010-06-19 59 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}))$") 

謝謝。

相關問題