Domanda

Ho questo testo di esempio, che viene recuperato dal nome della classe su un elemento html:

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

Sto cercando di abbinare il "test1" / "test2" dati in ciascuno di questi esempi. Attualmente sto usando il seguente regex, che corrisponde al "err-test1" tipo di parola. Non riesco a capire come limitarlo ai soli dati dopo il trattino (-).

/err-(\S*)/ig

La testa fa male a sbattere contro questo muro.

È stato utile?

Soluzione

Da quello che sto leggendo, il tuo codice funziona già.

Regex.exec () restituisce una serie di risultati in caso di successo.

Il primo elemento dell'array (indice 0) restituisce l'intera stringa, dopo di che tutti gli elementi racchiusi () vengono inseriti in questo array.

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

Altri suggerimenti

Potresti provare 'err - ([^ \ n \ r] *)' - ma sei sicuro che sia la regex il problema? Stai usando l'intero risultato, non solo la prima acquisizione?

Le cose dopo il - dovrebbero essere nella matrice dei risultati. Il primo elemento è tutto il testo corrispondente (ad es. & Quot; err-test1 ") e gli elementi successivi sono gli abbinamenti tra parentesi di cattura (ad es. & Quot; test1 ").

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

Ecco un sito di riferimento .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top