Domanda

Sono completamente nuovo su regex e sto provando a usarlo per abbinare i valori al fine di mapparli su variabili (javascript guardando l'output in responceText generato da uno script php).

Al momento ho questo codice:

if (xmlhttp.readyState==4)
  {
  document.getElementById("test").innerHTML=xmlhttp.responseText;
  cmake = xmlhttp.responseText.match(/Combined_Make =(.*?)</);
  }

Ecco la (parte) dell'output che sta guardando:

echo "<span class=\"note\">";
echo "Test Output\n";
echo " Combined_Make = $model\n";
echo " Combined_Model = $marque\n";

quando tutto funziona, in realtà sta guardando una linea come:

Combined_Make = GRAND JEEP CHEROKEE<br />

Al momento sto tornando esattamente questo:

'Combined_Make = GRAND JEEP CHEROKEE > ;, GRAND JEEP CHEROKEE'

Certo che sto cercando solo 'GRAND JEEP CHEROKEE' in questo caso :) - Non sono inoltre sicuro del motivo per cui sto ottenendo quel risultato preciso!

Nota che dovrò assegnare più var $, ognuna usando una puntura di inizio diversa per la partita!

Grazie in anticipo per qualsiasi aiuto!

È stato utile?

Soluzione

Prova:

/Combined_Make =([^<]+)/

E poi vorrai accedere al primo gruppo di acquisizione ( [1] ):

cmake = xmlhttp.responseText.match(/Combined_Make =([^<]+)/)[1];

Potresti voler verificare che corrisponda prima di provare ad accedere al primo gruppo di acquisizione:

var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/);
cmake = match && match[1];

Altri suggerimenti

String.match () restituisce sempre un array, anche quando c'è una sola corrispondenza (tranne quando non c'è corrispondenza, quindi restituisce NULL )

Nel caso di motivi che includono sottogruppi acquisiti, String.match () restituirà sempre l'intera corrispondenza del motivo all'indice 0, quindi i gruppi di corrispondenza successivi dagli indici da 1 a N .

Ecco un modo chiaro per dimostrarlo

"hello".match( /he(ll)(o)/ );
// yields ["hello", "ll", "o"]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top