Wyrażenie regularne w celu ograniczenia liczby znaków do 10


189

Próbuję napisać wyrażenie regularne, które będzie dopuszczać tylko małe litery i maksymalnie 10 znaków. To, co do tej pory mam, wygląda następująco:

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

To nie działa ani się nie kompiluje. Miałem działający, który pozwalałby na pisanie małymi literami:

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

Ale muszę ograniczyć liczbę znaków do 10.


4
{} I + robią to samo (liczenie), więc są zbędne, stąd błąd.
PhiLho,

1
Powinieneś upuścić „+” z / ^ [az] {0,10} + $ /. Powinien to być / ^ [az] {0,10} $ /
SO Użytkownik

1
Zauważ, że wzorzec ^[a-z]{0,10}+$kompiluje się w niektórych językach, a niektóre z nich to Java, Perl (5.10+), PHP, Ruby (1.9+). Zobacz tę stronę, aby uzyskać więcej szczegółów.
Jerry

Zobacz także uniwersalne rozwiązanie poprzez lookahead: Ograniczanie długości znaków w wyrażeniu regularnym
Vadzim

Odpowiedzi:


356

Za pomocą nawiasów klamrowych można kontrolować liczbę wystąpień. Na przykład oznacza to od 0 do 10:

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

Dostępne są następujące opcje:

  • {3} Dokładnie 3 wystąpienia;
  • {6,} Co najmniej 6 wystąpień;
  • {2,5} 2 do 5 wystąpień.

Zobacz odwołanie do wyrażenia regularnego .

Twoje wyrażenie miało znak + po zamykającym nawiasie klamrowym, stąd błąd.


W narzędziach Chrome dla deweloperów z emberem musiałem odrzucić początek ^dopasowania właściwości TYLKO żądań o nazwie takiej jak 1234lub 5678, i musiałem dołączyć znak $
Devin G Rhode

11

/^[a-z]{0,10}$/powinno działać. /^[a-z]{1,10}$/jeśli chcesz dopasować co najmniej jedną postać, podobnie jak /^[a-z]+$/.


9

Dobrym rozwiązaniem może być dodanie chciwego dopasowania na końcu łańcucha, abyś mógł zaakceptować łańcuchy> 10, a wyrażenie regularne zwróci tylko pierwsze 10 znaków. /^[a-z0-9]{0,10}$?/


8

To bardzo zależy od używanego programu. Różne programy ( Emacs , vi , sed i Perl ) używają nieco innych wyrażeń regularnych. W tym przypadku powiedziałbym, że w pierwszym wzorze należy usunąć ostatni znak „+”.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.