Ich habe eine solche Regex:
%Vor%Es stimmt mit den folgenden Zeichenfolgen überein:
%Vor%Ich möchte die Anzahl der Ziffern in dieser Regex auf 8 begrenzen.
Versucht dies:
%Vor%Es hat aufgehört, irgendetwas zu finden.
Was mache ich falsch?
Das {}
hat drei Formen:
{N}
für eine festgelegte Anzahl von Zeit {M,}
für mindestens M mal {N,M}
für zwischen N und M Zeiten. Wenn Sie den letzten verwenden, ist das Minimum obligatorisch.
Ändern Sie Ihre Regex in \d{1,8}
, um zwischen 1 und 8 mal eine Ziffer zu finden
Beginnen Sie mit 1, wie Sie + verwendet haben, was eine Verknüpfung für {1,}
Sehen Sie sich an, was regex101.com sagt:
Sie können den Begrenzungsquantor {1,8}
verwenden, der 1 bis 8 Ziffern entspricht. Ich sehe, dass es mindestens 1 geben muss, da du +
in deiner ursprünglichen Regex hast.
Siehe Demo
Aus der regulary-expressions.info :
Die Syntax lautet
{min,max}
, wobeimin
null oder eine positive Ganzzahl ist Zahl, die die Mindestanzahl von Übereinstimmungen angibt, undmax
ist eine Ganzzahl gleich oder größer alsmin
, was die maximale Anzahl an Übereinstimmungen angibt. Wenn das Komma vorhanden ist, abermax
weggelassen wird, ist die maximale Anzahl von Übereinstimmungen sind unendlich. Also{0,1}
ist das gleiche wie?
,{0,}
ist das gleiche wie*
, und{1,}
ist dasselbe wie+
. Wenn Sie sowohl das Komma als auch das Maximum auslassen, wird das angezeigt Engine, um das Token genaumin
mal zu wiederholen.
Versuchen Sie, die untere Grenze wie (\d{0,8})
anzugeben.
Neben einigen Regex-Dialekten lassen sich Leerzeichen nach Komma in {0,8}
construction nicht zulassen.
Sie müssen auch eine untere Grenze festlegen.
%Vor%Sie können hier eine Demo sehen