2009-09-09 6 views
0

Je suis entièrement nouveau à regex, et j'essaie de l'utiliser pour faire correspondre les valeurs afin de les mapper aux variables (javascript en regardant la sortie dans responceText généré à partir d'un script php).javascript regex pour faire correspondre les caractères entre deux chaînes

Au moment où j'ai ce code:

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

Voici la (partie) de la sortie de son regardant:

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

quand tout fonctionne, la recherche fait sur une ligne comme :

Combined_Make = GRAND JEEP CHEROKEE<br /> 

En ce moment je suis en train de revenir précisément ceci:

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

Bien sûr, je suis juste après 'GRAND CHEROKEE JEEP' dans ce cas :) - Je suis pas sûr pourquoi je reviens cette sortie précise!

S'il vous plaît noter que je vais devoir assigner plusieurs var $, chacun utilisant une start start différente pour la correspondance!

Merci d'avance pour toute aide!

Répondre

1

Essayez:

/Combined_Make =([^<]+)/ 

Et vous voulez accéder au premier groupe de capture ([1]):

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

Vous pouvez tester qu'il correspond avant d'essayer d'accéder le premier groupe de capture cependant:

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

grâce - qui fonctionne! – Mizpah

0

String.match() retourne toujours un tableau, même quand il n'y a qu'une seule (sauf quand il n'y a pas de match, il retourne NULL)

Dans le cas des modèles qui incluent capturés sous-groupes, String.match() retournera toujours toute correspondance de motif à l'index 0, puis des groupes correspondants aux index 1 à N.

Voici une façon de démontrer clairement que

"hello".match(/he(ll)(o)/); 
// yields ["hello", "ll", "o"] 
Questions connexes