|
|
|
| Здраствуйте, помогите пожайлуста составить регулярное выражение, которое проверяет выражение на лишние пробелы между словами. Слов может быть любое количество. | |
|
|
|
|
|
|
|
для: Shaspetr
(19.05.2015 в 16:31)
| | ^([a-zA-Zа-яА-Я]+\s?[a-zA-Zа-яА-Я]+){2,20}$
Вот составил примерно, но мне нужно еще что-бы было всего не более 20 символов, но почему-то на превышение символов не срабатывает. Возращает true, хотя должно false. | |
|
|
|
|
автор: Мимовася (20.05.2015 в 14:28) |
|
|
для: Shaspetr
(19.05.2015 в 17:30)
| | Так и не вник до конца, какие варианты нужно пропускать, какие отсекать.
Ваш вариант требует наличия от 2 до 20 пар слов, причём между эти парами пробел не ставится, да и между словами у вас пробел необязателен (из-за квантификатора "?").
Мой вариант (класс символов упростил для читаемости):
^(?:[a-z]{1,20}\s(?!\s))*[a-z]{1,20}$
|
| |
|
|
|
|
|
|
|
для: Мимовася
(20.05.2015 в 14:28)
| | Спасибо :)
Мне необходимо чтобы у пользователей была возможность вводить инициалы имя и фамилия как вместе так и по отдельности, при том что-бы длина инициалов не превышало 20 символов.
То есть
правильные варианты: Иван, Иванов Иван, Иванов Иван Иванович(между словами один пробел).
неправильные: Иванов Иван(лишний пробел), Иванов Иван Ивановиччччччччч(длина инициалов превышает 20 символов).
Ваше выражение работает для пробелов(не пропускает лишние), но если попробовать ввести более 20 символов, то тоже пропускает, а должно не пропускать.
Тестирую через онлайн калькулятор регулярных выражений http://planetcalc.ru/708/ | |
|
|
|
|
|
|
|
для: Shaspetr
(20.05.2015 в 17:31)
| | Пришел к выводу, что нужно делать два регулярных выражений, первое проверяет на количество символов:
/^[a-zA-Zа-яА-Я\s]{2,20}$/;
второе ищет лишние пробелы, хочу сделать компактное выражение, чтобы просто проверяло на лишний пробел:
на этом моменте опять встрял:
пробую [^\s]{2,}, срабатывает некорректно, сломал мозг на этих регулярках, не идут вообще( | |
|
|
|
|
автор: Мимовася (21.05.2015 в 10:59) |
|
|
для: Shaspetr
(20.05.2015 в 18:33)
| | Так нужно, чтобы каждое слово было не более 20 символов или вся строка целиком?
Моё выражение ограничивает длину каждого слова (Ивановиччччччччч - 16 символов - совпадает, Ивановиччччччччччччччч - 22 символа - не совпадает).
Длину всей строки можно ограничить поставив рядом с "^" шаблон . Но такие вещи проще сделать отдельной проверкой длины строки без всяких регулярок. | |
|
|
|
|
автор: Мимовася (21.05.2015 в 11:11) |
|
|
для: Shaspetr
(20.05.2015 в 18:33)
| | Убраны ограничения на каждое слово, добавлено ограничение на всю строку - от 1 до 20 символов (вообще странное ограничение, у меня не самые длинные ФИО, но уже 27 символов).
(?=.{1,20}$)^(?:[a-z]+\s(?!\s))*[a-z]+$
|
| |
|
|
|
|
|
|
|
для: Мимовася
(21.05.2015 в 11:11)
| | Благодарю:) | |
|
|
|