Regex, чтобы соответствовать строке, которая не содержит слов длиной более 10 символов? - PullRequest
2 голосов
/ 03 июня 2010
^(.)+\S{10}(.)+$ 

У меня есть это регулярное выражение, которое будет соответствовать любой строке, содержащей слово из 10 символов. Однако мне нужно ОБРАТНОЕ из этого.
Регулярное выражение, которое будет соответствовать только строкам, которые НЕ содержат слов> = 10 символов.

Ответы [ 2 ]

3 голосов
/ 03 июня 2010

Использовать отрицательное утверждение.

(?!.*\S{10})

\S{10} соответствует последовательности 10 \S (которая должна быть подпоследовательностью чего-либо более длинного). (?!pattern) - это негативное предположение, утверждение, которое истинно, если шаблон не совпадает. .* позволяет заглядывать так далеко, как необходимо.

Таким образом, весь шаблон

^(?!.*\S{10}).*$

Это соответствует всей строке, которая НЕ содержит \S{10}.

Смотри также

0 голосов
/ 03 июня 2010

Непроверенные:

^\s*\S{0,9}(\s+\S{1,9})*\s*$

Соответствует одному или нескольким словам. Первое слово является необязательным, поэтому пустая строка или строка всех пробелов будет соответствовать. Слова должны быть разделены пробелами \s+, поэтому не более 9 \S символов могут быть соседними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...