2012-01-27 4 views
6

Я пытаюсь написать регулярное выражение, которое будет проверять, что пользовательский ввод больше, чем X число символов без пробелов. Я в основном пытаюсь отфильтровывать начальные и конечные пробелы, сохраняя при этом, что вход больше, чем символы X; символы могут быть любыми, а не пробелами (пробел, вкладка, возврат, новая строка). Это регулярное выражение я использую, но он не работает:Минимальная длина Регулярное выражение

\s.{10}.*\s 

Я использую C# 4.0 (Asp.net Regular Expression валидатора) Кстати, если это имеет значение.

+1

Нужно ли быть регулярным выражением? Вы можете сделать это без регулярного выражения довольно легко. –

ответ

7

Это может быть проще, чтобы не использовать регулярное выражение на всех:

input.Where(c => !char.IsWhiteSpace(c)).Count() > 10 

Если пробелы не следует рассчитывать в середине, то это будет работать:

(\s*(\S)\s*){10,} 

Если вы не заботитесь о пробеле между символами без пробелов, другие ответы имеют этот сценарий.

+0

Извините, только что обновлено. Я использую валидатор регулярных выражений. – Mark

+0

@Mark - если ваша проверка не выполняется, если есть пробел в середине некоторых допустимых символов, например. 'f a i l' –

+0

Нет, это прекрасно, только до тех пор, пока есть X символов между первым не-пробелом и последним не-пробелом. – Mark

3

Это регулярное выражение ищет восемь или более символов между первым и последним непробельных символов, игнорируя начальные и завершающие пробелы:

\s*\S.{8,}\S\s* 
1

Если вы пытаетесь проверить (как в моем случае телефонный номер, который содержит 8 цифр), вам нужно обратиться к номеру ниже того, который вам нужен.

(\s*(\S)\s*){7,} 
Смежные вопросы