У меня есть веб-сайт ASP.NET с текстовым полем проверки регулярного выражения.
Я изменил выражение в свойстве проверки регулярного выражения "выражение проверки", и после компиляции (перестроения) и запуска ИЗМЕНЕНИЯ проверки не отражаются.
Предыдущая проверка работает нормально, но измененная проверка не работает.
Пожалуйста помогите!
изменить:
Первый код:
([a-zA-Z0-9_-.]+)\@((base.co.uk)|(base.com)|(group.com))
Второй код:
@"([a-zA-Z0-9_\-.]+)@((base\.co\.uk)|(base\.com)|(group\.com)|(arg\.co\.uk)|(arggroup\.com))"
Ответ 1 · Jan Goyvaerts
Предполагая, что ваш "первый код" является буквальным регулярным выражением, вам нужно экранировать дефис в классе символов с помощью обратной косой черты.
Ваш "второй код" представляет собой регулярное выражение, отформатированное как дословная строка С#, которая будет отлично соответствовать адресу электронной почты, такому как [email protected]. В этом регулярном выражении нет ничего плохого.
Вам придется опубликовать код, в котором вы используете это регулярное выражение, если оно не работает так, как вы хотите.
Ответ 2 · рейтинг -1 · Paul Chernoch
В этой части: [a-zA-Z0-9_\-.] вы избегаете дефиса. Правильный способ поставить дефис в классе символов регулярных выражений - это первая позиция (или он думает, что это часть диапазона):
[-a-zA-Z0-9_.]
Затем вы удалили обратную косую черту перед @. В Perl @ будет восприниматься как часть имени списка, но в C# я не уверен, какой эффект он имел бы, чтобы не избежать его.
Убегание периодов также вызывает подозрение. Возможно, вам придется удвоить их: например. \\. Вместо этого для точки я бы использовал класс символов: т. е. [.] Внутри класса символов точка теряет свое особое значение.
Попробуй это:
@"([-a-zA-Z0-9_.]+)\@((base[.]co[.]uk)|(base[.]com)|(group[.]com)|(arg[.]co[.]uk)|(arggroup[.]com))"