2013-10-15 167 views
-1

我有以下的代碼來驗證電子郵件地址:允許空文本框,但不允許輸入無效

<asp:TextBox ID="txtPersonalEmail" runat="server" Text='<%# Bind("PersonalEmail") %>' Width="185px" />      
<%-- validate for a valid email address entered--%> 
<asp:RegularExpressionValidator ID="EmailValidator" runat="server" ErrorMessage="*This is not a valid email address" ValidationExpression="\[email protected]\S+\.\S+" ControlToValidate="txtPersonalEmail"/> 

的電子郵件地址是不是必需的,但如果輸入一個電子郵件地址,它必須是以正確的格式。目前,可以輸入格式不正確的電子郵件地址,但會返回錯誤消息,但文本框中的值仍然可以提交。

有關如何防止格式不正確的電子郵件被提交,但仍然允許空白值的任何建議?

+1

你有什麼問題? – MikeSmithDev

+0

'RegularExpressionValidator'應該允許空白值。 – greg84

+0

然後刪除'RequiredFieldValidator',你沒有告訴我們;-) –

回答

2

好吧,我得到了你的問題,現在你應該嘗試以下任一正則表達式的。請讓我知道任何其他查詢

1) ValidationExpression="^([a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]){1,70}$" 

2) ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" (As suggested by James Johnson in his answer) 

有你結合RegularExpressionValidatorRequiredFieldValidator

據我所知RegularExpressionValidator將允許空白文本框,除非你有必填字段校驗

+2

正是......這就是爲什麼我想知道他的問題是什麼。 – MikeSmithDev

+0

@MikeSmithDev ok ..我在想可能是我錯了,但現在我確定 – Dhaval

+0

是的,沒有輸入是必需的,除非正則表達式強制執行。 –

1

RegularExpressionValidator組合絕對是你想要的,或者如有必要也可以使用一個CustomValidator。如果驗證器給你提供了問題,你可能想要使用不同的正則表達式。

這一個效果很好:

ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 

我不記得它是否適用於這個特定的驗證,但有可能是一個ValidateEmptyText屬性,你可以利用:

ValidateEmptyText="false" 
0

你想以驗證RequiredFieldValidatorRegularExpressionValidator

RequiredFieldValidator驗證文本框是否爲空。

RegularExpressionValidator驗證在文本框中輸入的電子郵件地址是否有效。

<asp:TextBox ID="EmailTextBox" runat="Server" /> 
<asp:RequiredFieldValidator 
    ControlToValidate="EmailTextBox" Display="Dynamic" 
    Text="(Required)" 
    ErrorMessage="Email is required." 
    runat="Server" 
    ID="EmailRequiredFieldValidator" /> 
<asp:RegularExpressionValidator 
    ControlToValidate="EmailTextBox" 
    Text="(Invalid)" 
    ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
    ErrorMessage="The e-mail address you specified is not well-formed." 
    runat="Server" 
    ID="EmailRegularExpressionValidator" 
    Display="Dynamic" />