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

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

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

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

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

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


person Community    schedule 30.10.2009    source источник
comment
{} И + делают одно и то же (подсчет), поэтому они избыточны, отсюда и ошибка.   -  person PhiLho    schedule 30.10.2009
comment
Вы должны убрать "+" из / ^ [a-z] {0,10} + $ /. Это должно быть / ^ [a-z] {0,10} $ /   -  person SO User    schedule 30.10.2009
comment
Обратите внимание, что шаблон ^[a-z]{0,10}+$ компилируется на некоторых языках, и некоторые из наиболее заметных - это Java, Perl (5.10+), PHP, Ruby (1.9+). Дополнительные сведения см. На этой странице.   -  person Jerry    schedule 07.01.2014
comment
См. Также универсальное решение через просмотр вперед: Ограничение длины символа в регулярном выражении   -  person Vadzim    schedule 30.03.2020


Ответы (6)


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

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

Возможные варианты:

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

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

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

person cletus    schedule 30.10.2009
comment
В инструментах chrome dev с ember мне пришлось опустить начало ^, чтобы свойство соответствовало ТОЛЬКО запросам с именем типа 1234 или 5678, и мне пришлось включить знак $ - person Devin Rhode; 08.06.2018
comment
Примечание: не добавляйте пробел между , и 10 ({0, 10} не будет работать). - person Niek; 27.11.2020

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

person Joren    schedule 30.10.2009

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

person jfarrell    schedule 30.10.2009

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

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

person user6911841    schedule 02.03.2017

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

person Diego Sevilla    schedule 30.10.2009

pattern: /[\w\W]{1,10}/g

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

person Rochdi Belhirch    schedule 27.08.2020
comment
Это позволяет использовать пробелы, которые не запрашивались. - person deiga; 27.08.2020