Wenn Sie reguläre Ausdrücke verwenden, um dieselbe Zeichenfolge zu überprüfen, werden abwechselnd „true“ und „false“ zurückgegeben. In meiner Verzweiflung habe ich den maßgeblichen Leitfaden noch einmal durchgesehen und festgestellt, dass der Übeltäter lastIndex war. In diesem Artikel erfahren Sie, welchen Einfluss lastIndex auf regelmäßige Ergebnisse hat.
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 ist ein Ganzzahlen lesen/schreiben. 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 unter Verwendung 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 der ersten erfolgreichen Übereinstimmung mit test(), lastIndex wird auf die Endposition des Matches gesetzt, die 1 ist; wenn test() zum zweiten Mal ausgeführt wird, beginnt der Matching bei Index 1. Wenn der Match fehlschlägt, wird lastIndex 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 Manuell lastIndex = 0 nach test() setzen
Der Oben ist die Auswirkung von lastIndex auf regelmäßige Ergebnisse. Ich hoffe, es kann allen helfen.
Verwandte Empfehlungen:
Verwendung von indexOf und lastIndexOf Beispiel: Einführung_Javascript-Kenntnisse
js lastIndexOf() Anwendungsbeispiel
Das obige ist der detaillierte Inhalt vonBesprechen Sie ausführlich die Auswirkungen von lastIndex auf regelmäßige Ergebnisse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!