Es gibt drei Methoden für den regulären Abgleich in JavaScript: match, exec und test. Diese Methoden beziehen sich alle auf Zeichenfolgen und RegExp-Objekte, die Verwendungsszenarien sind jedoch unterschiedlich und können leicht verwechselt werden. match ist eine String-Methode, die ein RegExp-Objekt als Parameter empfängt, und die anderen sind Methoden des RegExp-Objekts, die einen String-Parameter empfangen.
var str = 'abcdef12ab34cd56ef'; var patt = new RegExp('ab'); //主意是非全局匹配 var ret_test = patt.test(str); console.log(ret_test); var ret_match = str.match(patt); console.log(ret_match); var ret_exec = patt.exec(str); console.log(ret_exec);
1. regExp.test(string)
Diese Methode ist die einfachste. Wenn in der Zeichenfolge eine mit regExp übereinstimmende Zeichenfolge gefunden wird, wird „true“ zurückgegeben. Wenn keine passende Zeichenfolge gefunden wird, wird „false“ zurückgegeben
2. regExp.exec(string)
Diese Methode ist etwas komplizierter.Wenn regExp kein globales Flag hat, ist sein Rückgabewert ein String-Array: Das 0. Element des Arrays ist der gerade gefundene String. Wenn regExp einen Unterausdruck hat, ist das 1. Element des Arrays das erste Element von regSub -expression, das zweite Element ist der zweite Unterausdruck von regExp ... und so weiter. Wenn im obigen Beispiel patt = new RegExp('f(
\d)(\d)','g'); dann ist ret_exec ein String-Array: ['f12','1' , '2'].
Wenn regExp ein globales Flag hat (Option g), ist der Rückgabewert ein Array, das aus der ersten übereinstimmenden Zeichenfolge besteht. Das 0. Element des Arrays ist die gerade übereinstimmende Zeichenfolge. Wenn regExp einen Unterausdruck hat, dann ist das Element Nr. 1 des Arrays ist der erste Unterausdruck von regExp, das Element Nr. 2 ist der zweite Unterausdruck von regExp ... und so weiter. Gleichzeitig wird ein Attribut (lastIndex) des regExp-Objekts geändert und lastIndex auf die Position des letzten Zeichens der Zeichenfolge und die Position danach gesetzt (im obigen Beispiel lastIndex = 2). Wenn regExp.exec(string) erneut aufgerufen wird, wird der Suchbereich beginnend mit regExp.lastIndex durchsucht. Zu diesem Zeitpunkt ist der Rückgabewert immer noch ein Einzelelement-String-Array, lastIndex = 10. Wir verwenden häufig eine While-Schleife, um Übereinstimmungen in einer Zeichenfolge zu durchlaufen:
var patt = new RegExp('ab', 'g'), str = 'abcdef12ab34cd56ef', ret; while((ret = patt.exec(str))!=null) { console.log(ret); } //输出 ['ab'] ['ab']
3. string.match(regExp)
Diese Methode ist einfacher als exec, da sie das lastIndex-Attribut von regExp nicht berücksichtigen muss. Ebenso müssen zwei Situationen unterschieden werden (globales Matching und nicht-globales Matching)Wenn regExp kein globales Flag hat, ist der Rückgabewert derselbe wie beim Aufruf von exec und gibt ein Array zurück. Das 0. Element des Arrays ist die gerade gefundene Zeichenfolge. Wenn regExp einen Unterausdruck hat, ist das 1. Element des Arrays regExp . Der erste Unterausdruck von , das zweite Element ist der zweite Unterausdruck von regExp ... und so weiter. Die Idee ist, dass das Array auch zwei Attribute hat: Eingabe ist die Eingabezeichenfolge string und Index ist die Position des ersten Zeichens der aktuell übereinstimmenden Zeichenfolge in Eingabe.
Wenn regExp das globale Flag (Option g) hat, ist es sehr einfach und entspricht unserem Verständnis: Gibt ein Array zurück, das aus allen übereinstimmenden Zeichenfolgen besteht. Dies ist ein Standardarray ohne Eingabeattribute und ohne Indexattribute. Das Rückgabewert-Array enthält außer der übereinstimmenden Zeichenfolge keine weiteren Informationen.
Wenn Sie anhand der obigen Analyse lediglich feststellen möchten, ob eine Zeichenfolge mit einem bestimmten regulären Ausdruck übereinstimmt, verwenden Sie die Testmethode. Wenn Sie alle übereinstimmenden Zeichenfolgen auf einmal abrufen oder nur die erste übereinstimmende Zeichenfolge finden möchten, verwenden Sie die Methode „match“. Wenn Sie mehrere Übereinstimmungen durchführen möchten und die Position jeder übereinstimmenden Zeichenfolge in der Originalzeichenfolge kennen müssen oder der reguläre Ausdruck Unterausdrucksinformationen enthält, auf die Sie achten müssen, verwenden Sie die Methode exec.
Das Obige ist eine Einführung in verschiedene Methoden des regulären Matchings in JavaScript. Ich hoffe, es wird für das Lernen aller hilfreich sein.