Нужна помощь в сопоставлении строки, если она содержит только утвержденные подстроки - PullRequest
0 голосов
/ 12 апреля 2011

Мне трудно писать это регулярное выражение.

В основном мне нужно заблокировать доставку электронной почты, если конверт получателя содержит несанкционированный домен. Мой почтовый интернет-шлюз (Brightmail) позволяет создавать правила, в которых я могу указать условие, используя регулярное выражение Match / DoesNotMatch.

Например, мне нужно разрешить только почту на yahoo.com, hotmail.com и gmail.com.

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

Если кто-то отправляет сообщение на yahoo.com И какой-либо другой домен, сообщение должно быть заблокировано

Если кто-то отправляет сообщение на yahoo.com, сообщение должно быть разрешено.

Возможно ли это?

Если кто-то отправляет сообщение на yahoo.com и hotmail.com, сообщение должно быть разрешено.

Я не полный нуб с регулярным выражением, но это меня озадачило.

Ответы [ 2 ]

0 голосов
/ 14 апреля 2011

Я играл с RegexPal и выбрал комбинацию, которая удовлетворит мои потребности.

В основном это будет соответствовать подстрокам перед символом @ только для тех строк, которые НЕ являются перечисленными.

(?! (. @yahoo.com |. @ hotmail.com |. @ gmail.com)). @

илидаже это будет работать

(?!(.@yahoo.com|.@hotmail.com|.*@gmail.com))@

или это

@(?!(.@yahoo.com|.@hotmail.com|.*@gmail.com))

или даже лучше

@(?!(.*(yahoo|hotmail|gmail).com))

Последний из них просто выделит@ войдите в строки доменного имени, которые не принадлежат.

0 голосов
/ 12 апреля 2011

Похоже, это возможно.Было бы токеном найти, где у вас есть ряд операторов OR между токенами.

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

http://regexpal.com/

...