Dieses Mal werde ich Ihnen die Beziehung zwischen lastIndex und regulärem Ausdruck vorstellen. Was sind die Vorsichtsmaßnahmen bei der Verwendung von lastIndex und regulärem Ausdruck? .
Vorwort
Ich bin heute auf ein Problem gestoßen, als ich reguläre Ausdrücke zur Überprüfung derselben Zeichenfolge verwendet habe. Gibt „true“ zurück und falsch. In meiner Verzweiflung habe ich den maßgeblichen Leitfaden noch einmal durchgesehen und festgestellt, dass der Übeltäter lastIndex war. Sie können es in der Konsole ausprobieren
let reg = /[\d]/g //undefined reg.test(1) //true reg.test(1) //false
lastIndex
lastIndex wird im maßgeblichen Leitfaden wie folgt erklärt: Es handelt sich um eine Lese-/ Schreiben Sie die Ganzzahl. Wenn das passende Muster den g-Modifikator hat, wird dieses Attribut am Anfang des nächsten Index in der gesamten Zeichenfolge gespeichert. Dieses Attribut wird von exec() und test() verwendet. Beobachten Sie weiterhin anhand des obigen Beispiels das lastIndex-Attribut
let reg = /[\d]/g //有修饰符g //undefined reg.lastIndex //0 reg.test(1) //true reg.lastIndex //匹配一次后,lastIndex改变 //1 reg.test(1) //从index 1 开始匹配 //false reg.lastIndex //0 reg.test(1) //true reg.lastIndex //1
Nach dem ersten erfolgreichen Match mit test() wird lastIndex auf die Endposition des Matches gesetzt, die bei Verwendung von test() 1 ist Zum zweiten Mal, beginnend mit Index 1, schlägt der Abgleich fehl und lastIndex wird auf 0 zurückgesetzt. Dies führt dazu, dass die Matching-Ergebnisse nicht den Erwartungen entsprechen
Lösung
1. Verwenden Sie nicht den g-Modifikator
reg = /[\d]/ ///[\d]/ reg.test(1) //true reg.test(1) //true reg.lastIndex //0 reg.test(1) //true reg.lastIndex
2. Stellen Sie lastIndex manuell auf 0 nach test()
Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall in diesem Artikel gelesen haben Bitte achten Sie auf andere verwandte Themen im chinesischen PHP-Website-Artikel!
Empfohlene Lektüre:
Organisation häufig verwendeter regulärer Ausdrücke
Das obige ist der detaillierte Inhalt vonDie Beziehung zwischen lastIndex und regulären Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!