Регулярное выражение для ограничения количества символов до 10 - PullRequest
155 голосов
/ 30 октября 2009

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

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

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

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

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

Ответы [ 5 ]

314 голосов
/ 30 октября 2009

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

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

Варианты:

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

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

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

9 голосов
/ 30 октября 2009

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

8 голосов
/ 30 октября 2009

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

6 голосов
/ 30 октября 2009

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

5 голосов
/ 02 марта 2017
grep '^[0-9]\{1,16\}' | wc -l

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

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