Регулярное выражение ведет себя по-разному в коде С# позади и в aspx

Примечание: вопрос был отредактирован, чтобы соответствовать тому, что я пробовал от комментаторов.

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

 Regex regExEmail = new Regex(@"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"); 
 if (!regExEmail.IsMatch(contact.emailAddress))
 {
     //do something
 }

person Kirit Chandran    schedule 25.10.2010    source источник
comment
Разве ^(\w+([-+.]\w+)*@\w+([-.]\w+)*$ не будет достаточно? (Извините за отсутствие ответа) Изменить: неважно :)   -  person Kevin Stricker    schedule 26.10.2010
comment
Я считаю, что мы используем стандартное регулярное выражение проверки электронной почты Microsoft.   -  person Kirit Chandran    schedule 26.10.2010
comment
У вас есть пример того, что в одном случае он соответствует неправильно, а в другом нет?   -  person Kevin Stricker    schedule 26.10.2010
comment
Это регулярное выражение мне не подходит. Вам нужно избежать точек: @^(\w+([-+\.]\w+)*@\w+([-\.]\w+)*\.\w+([-\.]\w+)* )$   -  person OJ.    schedule 26.10.2010
comment
спасибо, вот что я сделал. Я изменил регулярное выражение на: «\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*». В регулярном выражении на стороне aspx не будет проверяться «abc.efg@xyz@[email protected]». однако на валидаторе cs, как у меня выше, это будет. В чем разница между валидаторами. Я, вероятно, могу понять, как заставить его работать на стороне cs, используя другое выражение, хотя это не главное, почему эти вещи ведут себя по-разному. Кстати, большое спасибо всем, кто помогает, я очень ценю это.   -  person Kirit Chandran    schedule 26.10.2010


Ответы (2)


В конструкторе регулярных выражений вы можете использовать версию с двумя параметрами для установки значения RegexOptions. Это перечисление включает значение для ECMAScript, что приведет к тому, что сопоставление регулярных выражений будет следовать поведению, совместимому с ECMAScript.

person JeremyDWill    schedule 26.10.2010
comment
Это поможет, если цель состоит в том, чтобы регулярное выражение JavaScript и регулярное выражение ASP.NET работали одинаково, но я не уверен, как это поможет здесь. - person Steven Sudit; 26.10.2010
comment
@Steven Sudit - я понял, что вопрос ОП означает, что его визуализированная страница ASP.NET (отсюда HTML / JavaScript) использует указанное регулярное выражение, и он хотел, чтобы его веб-служба использовала то же регулярное выражение для проверки. Установка перечисления ECMAScript в конструкторе регулярных выражений, используемом веб-службой, должна выполнить это, верно? - person JeremyDWill; 26.10.2010
comment
Да, Джереми Д. Уилл, именно это я и пытался сказать. Прошу прощения, если не правильно сформулировал вопрос - person Kirit Chandran; 26.10.2010

Используйте asp:CustomValidator вместо RegularExpressionValidator, который будет вызывать любой метод проверки из библиотеки, такой же, как будет использоваться WS.

person abatishchev    schedule 26.10.2010