У меня есть RegularExpressionValidator
(ASP.NET 2.0), который я использую, чтобы убедиться, что URL, введенный в текстовое поле, начинается правильно с http://
. Я использовал выражение ValidationExpression ^http://
. Теперь я также разрешаю mailto
ссылки, поэтому мое выражение ^http://|^mailto:
.
Он работает в тестере регулярных выражений (установлен на клиентском движке Javascript) для таких входных данных, как "http://www.google.com" и" mailto: somebody@anymail.net ". Но RegularExpressionValidator на моей странице не делает" Пропустить любые действительные входные данные.
Я пробовал следующие варианты, все из которых работают в тестере, но ни одна из которых не работает в валидаторе:
(^http://)|(^mailto:)
^(http://)|(mailto:)
^http://|^mailto:
^(http://|mailto:)
http://|mailto:
^((http://)|(mailto:))
Объявление валидатора таково:
<asp:RegularExpressionValidator ID="revEditUrl" runat="server"
ControlToValidate="txtEditUrl" ErrorMessage="Url must begin with 'http://' or 'mailto:'"
ValidationExpression="^((http://)|(mailto:))" Display="Dynamic"
ValidationGroup="myGroup" />
Мое намерение - разрешить любой ввод, начинающийся либо с http: //, либо с mailto :. Что я тут не так делаю?
ОБНОВЛЕНИЕ: Страница MSDN по регулярным выражениям в ASP.NET говорит:
Вам не нужно указывать начало и конец строки, соответствующие символам (^ и $) - они предполагаются. Если вы добавите их, это не повредит (или не изменит) ничего - это просто не нужно.
Означает ли это, что предполагается, что в моем входе нет ничего, что не соответствовало бы моему регулярному выражению (т.е. это должно быть либо http://
, либо mailto:
)? Если так, то почему мой оригинальный шаблон ^http://
сработал?