Регулярное выражение для ограничения количества символов до 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]+$/делает.

Joren
источник
9

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

jfarrell
источник
8

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

Диего Севилья
источник
7
grep '^[0-9]\{1,16\}' | wc -l

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

user6911841
источник