Не может получить asp: RegularExpressionValidator для работы

У меня возникла проблема с получением проверки правильности поля регулярного выражения для работы asp-страницы, которую я пытаюсь обновить.

Вот панель asp: Panel, разделенная на важные бит:

<asp:panel id="pnlEmailAddressCollection" runat="server">
 <div id="POMInput-wrapper">
 <div>
 <span>Name:</span>
 
 <span>Email Address:</span>
 
 </div>
 <div>
 
 
 </div>
 <asp:requiredfieldvalidator id="rfvNameValidator" runat="server" errormessage="Please enter your name" controltovalidate="txtUserName" display="None">
 <asp:requiredfieldvalidator id="RequiredFieldValidator1" runat="server" errormessage="Please enter your email address" controltovalidate="txtEmailAddress" display="None">
 <asp:regularexpressionvalidator id="rfvEmailValidator2" runat="server" errormessage="Please enter a valid email address" controltovalidate="txtEmailAddress" display="None" validationexpression="^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}$">
 <asp:validationsummary id="ValidationSummary1" runat="server" showmessagebox="true" showsummary="false" enableclientscript="true"> 
 </asp:validationsummary></asp:regularexpressionvalidator></asp:requiredfieldvalidator></asp:requiredfieldvalidator></div>
</asp:panel>

В настоящее время он не работает в любом почтовом ящике. Asp: RequiredFieldValidator работает как ожидалось.

Я тестировал регулярное выражение в тестовом проекте, и регулярное выражение кажется хорошим (возвращает true в действительных сообщениях электронной почты, false на недопустимых). Я неправильно установил asp: RegularExpressionValidator?

3 ответа

Вы должны удалить двойную обратную косую черту:

ValidationExpression="^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$"

Обратите внимание, что вы помещаете две обратные косые черты, где вы имели в виду только одну. Если вы хотите установить это выражение из кода позади, строка, которую вы указали, верна. Но в aspx вам не нужно скрывать обратную косую черту.

В настоящий момент принятый адрес электронной почты будет похож на abc @abc {backslash}.com


Регулярное выражение работает в .NET(на стороне сервера), но не выполняется из-за реализации JScript на стороне клиента, поскольку задокументировано в Замечаниях. Чтобы проверить это (он проходит проверку на стороне сервера), установите для свойства EnableClientScript на валидаторе значение false.

Затем отмените это изменение и убедитесь, что регулярное выражение будет передаваться на стороне клиента. Вы можете использовать онлайн-тестер, если вам это проще.


Вы можете попробовать с помощью этого кода

ValidationExpression="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"

Примечание: вы можете удалить символы ^ и $

licensed under cc by-sa 3.0 with attribution.