javascript regex Zeichen zwischen zwei Strings übereinstimmen
-
05-07-2019 - |
Frage
Ich bin völlig neu zu Regex, und ich versuche, es zu benutzen vales anzupassen, um sie auf Variablen abbilden (JavaScript am Ausgang in responceText suchen aus einem PHP-Skript generiert).
Im Moment habe ich diesen Code ein:
if (xmlhttp.readyState==4)
{
document.getElementById("test").innerHTML=xmlhttp.responseText;
cmake = xmlhttp.responseText.match(/Combined_Make =(.*?)</);
}
Hier ist der (Teil) des Ausgangs seines Blick auf:
echo "<span class=\"note\">";
echo "Test Output\n";
echo " Combined_Make = $model\n";
echo " Combined_Model = $marque\n";
, wenn alles läuft, sein eigentlich auf der Suche auf einer Linie wie:
Combined_Make = GRAND JEEP CHEROKEE<br />
Im Moment bin ich immer genau dies zurück:
'Combined_Make = GRAND JEEP CHEROKEE>, GRAND JEEP CHEROKEE'
Natürlich bin ich nach nur ‚GRAND JEEP CHEROKEE‘ in diesem Fall :) - Ich bin auch nicht sicher, warum ich immer wieder, dass eine präzise Ausgabe
Bitte beachten Sie, dass ich mehrere var $ zuweisen müssen, die jeweils einen unterschiedlichen Start Stachel für das Spiel mit!
Vielen Dank im Voraus für jede Hilfe!
Lösung
Versuchen:
/Combined_Make =([^<]+)/
Und dann werden Sie die erste Capture-Gruppe zugreifen möchten ( [1]
):
cmake = xmlhttp.responseText.match(/Combined_Make =([^<]+)/)[1];
Sie können testen wollen, dass es passt, bevor die erste Capture-Gruppe zuzugreifen versuchen, aber:
var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/);
cmake = match && match[1];
Andere Tipps
String.match()
gibt immer einen Array, auch wenn es nur ein einziges Spiel (außer wenn es keine Übereinstimmung gibt, dann NULL
es gibt)
Im Fall von Mustern, die erfassten Untergruppen umfassen, String.match()
wird immer die gesamte Rückmusterübereinstimmung bei Index 0, und dann nachfolgende Indizes passende Gruppen bei 1 bis N .
Hier ist eine klare Art und Weise, dass
zu demonstrieren"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]