Heim > Web-Frontend > js-Tutorial > Die Beziehung zwischen lastIndex und regulären Ausdrücken

Die Beziehung zwischen lastIndex und regulären Ausdrücken

php中世界最好的语言
Freigeben: 2018-03-29 11:02:35
Original
1811 Leute haben es durchsucht

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
Nach dem Login kopieren

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 Login kopieren

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
Nach dem Login kopieren

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:

Detaillierte Erläuterung der Verwendung von D-Metazeichen (entspricht „[^0-9]“) in regulären Ausdrücken

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage