Frage

Ich habe diesen Beispieltext, der aus dem Klassennamen auf einem HTML-Elemente abgerufen werden:

rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive

Ich versuche, die „test1“ / „test2“ Daten in jedem dieser Beispiele zu entsprechen. Ich bin derzeit die folgende Regex, die den „err-test1“ Worttyp übereinstimmt. Ich kann nicht herausfinden, wie es zu begrenzen, um nur die Daten nach dem Bindestrich (-).

/err-(\S*)/ig

Kopf schmerzt gegen diese Wand aus hämmern.

War es hilfreich?

Lösung

Von dem, was ich lese, Ihr Code bereits funktioniert.

Regex.exec() gibt einen Array von Ergebnissen auf Erfolg.

Das erste Element in dem Array (Index 0) gibt die gesamte Zeichenfolge, wonach alle () umschlossenen Elemente in diese Anordnung geschoben werden.

var string = 'rich-message err-test1 erroractive';
var regex = new RegExp('err-(\S*)', 'ig');
var result = regex.exec(string);

alert(result[0]) --> returns err-test1
alert(result[1]) --> returns test1

Andere Tipps

Sie könnten versuchen, 'err - ([^ \ n \ r] *)' - aber sind Sie sicher, dass es die Regex ist, dass das Problem ist? Sind Sie das gesamte Ergebnis verwendet wird, nicht nur der erste Fang?

Der Stoff, nach dem - sollte in der Ergebnisliste Array sein. Der erste Punkt ist umso passende Text (zum Beispiel „err-test1“) und die nächsten Elemente sind die Spiele von den Fänger Klammern (zum Beispiel „Test1“).

myregex = /err-(\S*)/ig;
mymatch = myregex.exec("data with matches in it");
testnum = mymatch[1];

Hier ist ein Referenzstelle rel="nofollow.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top