Регулярное выражение; Найти, содержит ли строка какое-либо слово, содержащее более X символов - PullRequest
0 голосов
/ 03 июня 2010

Я пытаюсь использовать Validator на сайте ASP.NET, и мне нужно выяснить, содержит ли текстовое поле Street Address допустимую запись.

Записи со словами, длина которых превышает X символов (в данном случае 25, без знаков препинания и пробелов), приведут к тому, что HTML-код на печатной странице формата А4 не будет перенесен должным образом и, следовательно, не будет соответствовать определенным размерам, правильно отбрасывая поля .

Для адреса улицы, который я хочу сопоставить, допустимо что-то вроде «201 Long Road», но «235 ReallyLongAndNarrowWindingRoadBesideTheRiver Street» недопустимо.

Использование средства проверки правильности регулярных выражений Microsoft .Net Мне нужно знать, каким может быть шаблон RegEx.

Я думаю, что если он найдет совпадение, Валидатор сработает правильно, однако, если нет совпадения, Валидатор не сработает и кнопка Обновить (в данном случае) не сработает.

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

Любая помощь будет принята с благодарностью, так как я действительно застрял с этой проблемой.

Спасибо, Дэвид

Ответы [ 2 ]

1 голос
/ 03 июня 2010

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

(?!.*\S{25})

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

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

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

Соответствует всей строке, которая НЕ содержит \S{25} ( смотрите ее в действии на rubular.com, с порогом 10 ).

Смотри также

1 голос
/ 03 июня 2010

Вы можете использовать следующее.

"^\w{0,25}(?>\W+\w{1,25})*\W*$"

Начинается с 0-25 слов символов. Затем у нас есть повторяющаяся группа, состоящая как минимум из одного неслова, затем из 1-25 слов. Наконец, у нас может быть 0 или более не-слов в конце. ?> - моя непроверенная попытка устранить экспоненциальный возврат .

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