2015-04-09 3 views
-1

Я пытаюсь написать регулярное выражение в C#, которое не допускает пробелов (в начале, в конце или в строке) и определенных строк во входном значении.Регулярное выражение, чтобы не допускать пробелы и определенные строки

Это то, что у меня есть: @"^((?!string1|string2).)*$". Этот шаблон проверяет входное значение, которое содержит string1 или string2, но не проверяет пробелы.

Недействительные примеры (Рассмотрим _ как пространство):

[email protected] 
[email protected] 
[email protected]_ 
[email protected] 
[email protected] 

Я хочу, чтобы проверить оба случая в то же регулярное выражение. Где мое Regex неправильно?

+2

после некоторых действительных и недействительных примеров. –

+0

Недействительные примеры "[email protected]", "[email protected]", "[email protected]", "[email protected]", "некоторые [email protected]" –

+0

опубликуйте его в своем вопросе. –

ответ

0

Вы можете просто добавить пробел или лучше \p{Zs}, чтобы соответствовать только пробелы (или \s также соответствовать новой строки):

^((?!string1|string2|\p{Zs}).)*$ 

См demo

В качестве альтернативы, вы можете использовать отрицательный смотреть вперед на начало любого привязанного регулярного выражения для запрещения пробелов (т. е. для соответствия строке без пробелов):

(?!^.*\p{Zs}.*$)

Ваше регулярное выражение будет выглядеть

@"^(?!.*\p{Zs}.*$)((?!string1|string2).)*$" 

См demo

Смежные вопросы