2012-03-25 15 views
0

Ich habe ein wenig Probleme mit dem regulären Ausdruck.ein bestimmtes Wort mit .match und regulären Ausdruck nicht funktioniert

Ich möchte einen regulären Ausdruck in einem Satz übereinstimmen.

Beispiel:

John has two candy ::123:: 

und ich diesen Code verwende es zu suchen:

var getid = x$('div').html().match(/::([^:]+)::/g); 

Um die 123 unsere des Satzes.

Also, was ist mein Problem hier? Ich bekam immer einen undefinierten Wert für getid var.

+0

ja x $ ist der Alias. aber es bekommt einen undefinierten Wert. – sm21guy

+0

Haben Sie nur div auf der Seite? Es könnte eine gute Idee sein, auf das Element per ID zuzugreifen. –

+0

Ich verwende (this) .html(); denn darüber ist es die div ID. auf Klickfunktion. – sm21guy

Antwort

0

Das Problem ist die g Flagge. Sie verwenden es nicht mit String#match. Entfernen Sie es und es funktioniert gut (live copy | source):

var getid = x$('div').html().match(/::([^:]+)::/); 
if (getid) { 
    display("Found: " + getid[1]); 
} 
else { 
    display("Not found"); 
} 

Wenn Sie alle Spiele im Text zu finden, verwenden Sie RegExp#exec und eine Schleife (und die g Flagge) (live copy | source):

var rex = /::([^:]+)::/g; 
var str = x$('div').html(); 
var getid; 
while (getid = rex.exec(str)) { 
    display("Found: " + getid[1]); 
} 

(Zur besseren Übersicht können Sie

while ((getid = rex.exec(str)) != null) { 

verwenden ... da in einem te einen Auftrag mit st sieht aus wie ein = anstelle von == typo; aber es kommt auf dasselbe hinaus anders als die Lesbarkeit.)


Re Sie Ihren Kommentar unten zu fragen über x$(this), sollte es keinen Unterschied machen. Hier sind die obigen Beispiele überarbeitet x$(this) verwenden:

+0

Hallo, ich habe die g-Flagge entfernt, die immer noch einen undefinierten Wert hat. Ich benutze $ (this), ist es in Ordnung oder wird es das Match beeinflussen? – sm21guy

+0

@ sm21guy: 'x $ (this)', um das Element zu bekommen, wird keinen Unterschied machen (vorausgesetzt, das 'this' in Frage ist ein Element mit dem Text), muss es ein anderes Problem mit dem Code sein. Mach es mit den obigen Arbeitsbeispielen und du solltest es finden können. Ich habe Beispiele mit 'x $ (this)' hinzugefügt. –

+0

danke ich suche nach anderen Problemen. – sm21guy

Verwandte Themen