2010-05-17 3 views
0
<th>Prêmio</th> 
    <td colspan="11"> 
    <div class="res"><img class="r1" src="img/x.gif" alt="Madeira" title="Madeira" />215 | <img class="r2" src="img/x.gif" alt="Barro" title="Barro" />193 | <img class="r3" src="img/x.gif" alt="Ferro" title="Ferro" />192 | <img class="r4" src="img/x.gif" alt="Cereal" title="Cereal" />202</div><div class="carry"><img class="car" src="img/x.gif" alt="carregamento" title="carregamento" />802/1800</div></td></tr></tbody></table><table cellpadding="1" cellspacing="1" class="defender"> 
    <thead> 
    <tr> 

J'essaie d'obtenir "802/1800", mais ça me rend fou. si je l'utilise:Javascript REGEX

var myregexp = /title="carregamento"/; 

cela fonctionne

mais passer à l'étape suivante qui est:

var myregexp = /title="carregamento" \/>/ 

déjà me returs nulle.

var myregexp = /title="carregamento" \/>/; 

var match = myregexp.exec(document.documentElement.innerHTML); 

FM_log(7,"match="+match); 

if (match != null) 
    resultado.push(match[1]); 
+0

Cela marche pour moi .. Faites-vous cela dans YQL ou dans un tag 'CDATA' ou quelque chose? L'expression fonctionne également sur [RegexPal] (http://regexpal.com) – sirhc

+0

Non, je ne le suis pas. Je ne travaille toujours pas ici. – FernandoSBS

Répondre

1

Vous devriez probablement publier le code exact, car il peut y avoir quelque chose qui ne va pas exactement avec l'objet regex.

Si je le test sur regextester.com, cela fonctionne parfaitement.

J'utilise l'expression régulière suivante, et elle correspond à la chaîne jusqu'à 802/1800, et sélectionne 802/1800 dans un groupe de capture.

title="carregamento" \/>(\d+\/\d+) 
+0

il y a le reste du code qui s'y rapporte. – FernandoSBS

+0

regextester.com fonctionne, mais pas si vous utilisez le sintax correct qui est /title = "carregamento" \ /> (\ d + \/\ d +)/ – FernandoSBS

+0

les caractères "/" qui dénotent une chaîne est une regex dans javascript ne sont pas requis. Vous devez seulement fournir la chaîne réelle regex – Rich

1

Le regexp que vous avez envoyé correct:

var myregexp =/title = "carregamento" />/

fait celui-ci correspond à la chaîne juste avant le "802/1800" string

+0

le code complet ne fonctionne pas. ça me rend nul. – FernandoSBS

0

Trouvé quel était le problème. Apparemment, il y a une différence entre ce que Firefox me montre lorsque je sélectionne "view document source" et ce que javascript me donne comme source. Voici la différence:

source firefox:

<img class="car" src="img/x.gif" alt="carregamento" title="carregamento" />802/1800</div> 

javascript source: (j'ai créé un journal me montrant document.documentElement.innerHTML

<img class="car" src="img/x.gif" alt="carregamento" title="carregamento">802/1800</div> 

de sorte que la différence était une simple />

J'ai également amélioré le code à:

 var myregexp = /title="carregamento">(.+?)\/(.+?)<\/div>/; 


     FM_log(7,"myregexp="+myregexp); 

     var resultado = []; 

     var match = myregexp.exec(document.documentElement.innerHTML); 

     //FM_log(7, document.documentElement.innerHTML); 

     FM_log(7,"match="+match); 

     if (match != null) { 
      resultado.push(match[1]) 
      resultado.push(match[2]) 
      }; 

     FM_log(7,"resultado[0]="+resultado[0]+" resultado[1]="+resultado[1]);   

     efficiency = Math.round(resultado[0]/resultado[1] * 100); 

     gain = resultado[0]; 

Ceci est le code final et fonctionne parfaitement.

Merci à tous ceux qui ont contribué.