JavaScript-RegEx-Test schlägt fehl: Problem entschlüsseln
Im Bereich JavaScript stieß ein Entwickler auf ein rätselhaftes Dilemma: sein Muster für reguläre Ausdrücke war konsistent lieferte für jede Eingabe falsche Ergebnisse. Als sie ihren Code mit Online-Redakteuren teilten, funktionierte er überraschenderweise wie vorgesehen. Eine genauere Untersuchung ergab den Übeltäter: unsachgemäße Backslash-Behandlung.
Ursprünglich definierte der Entwickler den regulären Ausdruck als Zeichenfolge:
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
Beim Erstellen eines regulären Ausdrucks aus einer Zeichenfolge ist dies jedoch der Fall Es ist wichtig, jedes Backslash-Zeichen zu verdoppeln. Dies liegt daran, dass der Parser das Zeichenfolgenliteral interpretiert und seine eigenen Regeln für Backslashes anwendet, was zu einem geänderten Ausdruck führt, der vom beabsichtigten Muster abweicht.
Durch Weglassen der Backslash-Verdopplung wurde das Muster zu:
^(0[1-9]|1[0-2])/d{4}$
Stattdessen sollten die Backslashes verdoppelt werden innerhalb der Zeichenfolge:
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
Diese Änderung stellt sicher, dass der Parser das Muster richtig interpretiert und das gewünschte Format für Monate und Jahre erkennt.
Darüber hinaus ist es eine Überlegung wert, die Syntax regulärer Ausdrücke zu verwenden direkt:
var regEx = /^(0[1-9]|1[0-2])\/\d{4}$/g;
Dies entfällt die Notwendigkeit einer String-Interpolation und bietet eine intuitivere Syntax zum Ausdrucken des Musters.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3