Vor allem der Charakter Klassen in Ihrem Muster sind ziemlich redundant und können zu weiteren Problemen führen, die sich aus Missverständnissen ergeben, wie Charakterklassen funktionieren.
Faustregel ist nicht etwas zu verwenden, wenn Sie nicht müssen. So "vereinfachen" Sie das Muster zu \d{5}(-\d{4})
.
Ein Paar von nicht verkabelten Klammern wie das in Ihrem Muster wird verwendet, um group and capture (setzen Sie ein Sub-Match in einen Speicher-Puffer für jede solche Gruppe zugeordnet).
So \d{5}(-\d{4})
Einstimmungen 5 Stellen von Anfang der Zeichenfolge (da das Musterattribut regex beidseitig mit ^(?:
und )$
standardmäßig verankert ist), und dann übereinstimmt, und legen den Bindestrich und 4 Ziffern am Ende der Zeichenfolge in den Speicherpuffer # 1 so, Erstellen einer Gruppe, die mit einem backreference bezeichnet werden kann.
Eine Rückreferenz in einem Muster wird mit \n
Syntax angegeben, wobei n
die Erfassungsgruppen-ID ist. Um also Text zu finden, der zuvor in demselben Muster gefunden wurde, können wir diese Rückwärtsreferenzen verwenden. Es ist nützlich, wenn Sie nach doppelten Werten in der Zeichenfolge suchen müssen. Sag mal, wollen Sie Strings validieren, die mit den gleichen zwei Ziffern beginnen und enden: pattern="(\d{2}).*?\1"
:
<form>
<input pattern="(\d{2}).*?\1" message="2 digits at the start and end should be identical!" />
<input type="submit"/>
</form>
Außerdem können Sie nutzen Gruppierung (beide Erfassung (...)
und Nicht-Erfassung (?:...)
) um mehrere Vorkommen von spezifischen Sequenzen zu vergleichen. Angenommen, Sie möchten 2 Sequenzen von abc
+ 3 Ziffern zusammenbringen. Sie würden dann (abc\d{3}){2}
verwenden.
Bis Sie es erfassen möchten, ist es nutzlos – rock321987
Parenthese sind Muster in regulären Ausdrücken. Diese Muster werden durch einen anderen Inhalt ersetzt. Es ist also kein mathematischer Operator, es ist eine nützliche Technik. –
Genau so sind auch die Zeichenklassen. Es scheint, dass der Autor des Buches Klammern gerade mag. Das Muster kann vereinfacht werden zu '\ d {5} - \ d {4}' (die geschweiften Klammern sind die einzigen, die hier nützlich sind). – BoltClock