Регулярное выражение для ограничения количества символов до 10
Я пытаюсь написать регулярное выражение которое будет содержать только строчные буквы и до 10 символов. Что я до сих пор выглядел так:
pattern: /^[a-z]{0,10}+$/
Это не работает или не компилируется. У меня был рабочий, который бы просто разрешил строчные буквы, которые были такими:
pattern: /^[a-z]+$/
Но мне нужно ограничить количество символов до 10.
Ответы
Ответ 1
Вы можете использовать фигурные скобки для управления количеством вхождений. Например, это означает от 0 до 10:
/^[a-z]{0,10}$/
Возможные варианты:
- {3} Точно 3 вхождения;
- {6,} Не менее 6 вхождений;
- {2,5} от 2 до 5 вхождений.
Смотрите ссылку регулярное выражение.
Ваше выражение имело + после закрывающей фигурной скобки, поэтому ошибка.
Ответ 2
/^[a-z]{0,10}$/
должен работать. /^[a-z]{1,10}$/
, если вы хотите совместить хотя бы один символ, например /^[a-z]+$/
.
Ответ 3
Возможно, было бы полезно добавить жадное соответствие в конец строки, чтобы вы могли принимать строки > 10, а регулярное выражение будет возвращаться только к первым 10 символам. /^[a-z0-9]{0,10}$?/
Ответ 4
Это очень зависит от используемой вами программы. Различные программы (Emacs, vi, sed и Perl) используйте несколько разные регулярные выражения. В этом случае я бы сказал, что в первом шаблоне последний "+" должен быть удален.
Ответ 5
grep '^[0-9]\{1,16\}' | wc -l
Дает счетчик с точным совпадением с лимитом
Ответ 6
^(?!0\d*$).*\d{3}
Минимум 3 номера