regexp для валидации текстового поля
Нужен regexp для валидации данных в поле input. Требования:
- не должны содержаться пробелы в начале и в конце слова (между словами могут)
- длина текста не должна превышать 100 символов
- должны использоваться только a-z и цифры Пока что получилось вот что:
/^[a-z0-9][a-z0-9\s]{0,98}[a-z0-9]$/i
но при этом я не могу ввести в input только один символ (
Ответы (2 шт):
Автор решения: VenZell
→ Ссылка
^(?=[a-z0-9])– проверяем, что первый символ не содержит пробела[a-z0-9\s]{0,99}– проверяем, что середина содержит символы из доступного набора[a-z0-9]$– проверяем, что последний символ не содержит пробела. Этот же символ может быть и первым и единственным, так как предыдущей части может и не быть, учитывая что минимальное количество символов из того набора указано равным 0.
/^(?=[a-z0-9])[a-z0-9\s]{0,99}[a-z0-9]$/i
Обратите внимание, что \s соответствует одиночному символу пустого пространства, включая пробел, табуляция, прогон страницы и перевод строки, а не только пробелу.
Автор решения: Wiktor Stribiżew
→ Ссылка
Используйте опциональную, необязательную подмаску:
/^[a-z0-9](?:[a-z0-9\s]{0,98}[a-z0-9])?$/i
// ^^^ ^^
Подмаска (?:...)? находит последовательность определённых в ней шаблонов один или ноль раз.
Подробности
^- начало строки.[a-z0-9]- цифра или буква из набора ASCII(?:[a-z0-9\s]{0,98}[a-z0-9])?- необязательная последовательность[a-z0-9\s]{0,98}- от нуля до 98 пробельных или букво-цифровых символов[a-z0-9]- цифра или буква из набора ASCII
$- конец строки.