Регулярное выражение для ограничения количества символов до 10


189

Я пытаюсь написать регулярное выражение, которое будет позволять только строчные буквы и до 10 символов. Что у меня до сих пор выглядит так:

pattern: /^[a-z]{0,10}+$/ 

Это не работает и не компилируется. У меня был рабочий, который позволял бы использовать только строчные буквы:

pattern: /^[a-z]+$/ 

Но мне нужно ограничить количество символов до 10.


4
{} И + делают одно и то же (считая), таким образом, они являются избыточными, а следовательно, и ошибкой.
PhiLho

1
Вы должны удалить '+' из / ^ [az] {0,10} + $ /. Это должно быть / ^ [az] {0,10} $ /
SO User

1
Обратите внимание, что шаблон ^[a-z]{0,10}+$компилируется на некоторых языках, и некоторые из известных - это Java, Perl (5.10+), PHP, Ruby (1.9+). Смотрите эту страницу для более подробной информации.
Джерри

Смотрите также универсальное решение через lookahead: ограничение длины символов в регулярном выражении
Вадим

Ответы:


357

Вы можете использовать фигурные скобки, чтобы контролировать количество вхождений. Например, это означает от 0 до 10:

/^[a-z]{0,10}$/

Варианты:

  • {3} Ровно 3 случая;
  • {6,} не менее 6 случаев;
  • {2,5} от 2 до 5 случаев.

Смотрите ссылку на регулярное выражение .

Ваше выражение имеет + после закрывающей фигурной скобки, отсюда и ошибка.


В инструментах chrome dev с ember мне пришлось пропустить запросы соответствия свойств начала ^ТОЛЬКО с именем вроде 1234или 5678, и мне пришлось включить знак $
Devin G Rhode

11

/^[a-z]{0,10}$/должно сработать. /^[a-z]{1,10}$/если вы хотите сопоставить хотя бы один символ, как это /^[a-z]+$/делает.


9

Возможно, было бы полезно добавить жадное сопоставление в конец строки, чтобы вы могли принимать строки> 10, и регулярное выражение вернет только до первых 10 символов. /^[a-z0-9]{0,10}$?/


8

Это очень сильно зависит от программы, которую вы используете. Различные программы ( Emacs , vi , sed и Perl ) используют немного разные регулярные выражения. В этом случае я бы сказал, что в первом шаблоне последний «+» должен быть удален.


7
grep '^[0-9]\{1,16\}' | wc -l

Дает количество с точным количеством совпадений с лимитом

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.