Also, ich habe versucht, einen regulären Ausdruck für etwas wie einen Widerstandswert auszugeben, der eine bestimmte Anzahl von Ziffern und höchstens einen Buchstaben enthält, aber immer eine bestimmte Anzahl von Zeichen insgesamt (verwenden wir das Beispiel) eines vierstelligen Widerstandscodes).
Erstens könnte ich '\d*[RKM]\d*'
machen, aber das würde etwas wie 'R'
erlauben.
Auch könnte ich etwas wie '[\dRKM]{4}'
machen, aber das wird Dinge wie 'RRR4'
erlauben, was kein Wert ist, den ich möchte.
'\d{1,4}[Rr]\d{0,3} | ([RKM]\d{3}) | (\d{4})'
, obwohl genauer, würde trotzdem '1234R567'
erlauben, was nicht vier Zeichen ist.
Also, gibt es im Prinzip eine kompaktere Art, '[RKM]\d\d\d | \d[RKM]\d\d | \d\d[RKM]\d | \d\d\d[RKM] | \d\d\d\d'
zu schreiben?
Je nach Regex-Geschmack können Sie ein Lookahead verwenden:
%Vor%(?!(?:\d*\D)
- Stellen Sie sicher, dass keine zwei nicht-einstelligen Zeichen vorhanden sind. Oder:
%Vor%(?=.{4}$)
- Stellen Sie sicher, dass die Länge der Zeichenfolge 4 ist. Siehe auch: Reguläre Ausdrücke: Gibt es einen UND-Operator?
Tags und Links regex