Question

J'ai cet exemple de texte, extrait du nom de la classe sur un élément html:

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

J'essaie de faire correspondre le " test1 "/" test2 " données dans chacun de ces exemples. J'utilise actuellement la regex suivante, qui correspond à "err-test1" Type de mot. Je n'arrive pas à comprendre comment limiter les données après le trait d'union (-).

/err-(\S*)/ig

La tête a mal de se cogner contre ce mur.

Était-ce utile?

La solution

D'après ce que je lis, votre code fonctionne déjà.

Regex.exec () renvoie un tableau de résultats en cas de succès.

Le premier élément du tableau (index 0) renvoie la chaîne entière, après quoi tous les éléments () sont insérés dans ce tableau.

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

Autres conseils

Vous pouvez essayer 'err - ([^ \ n \ r] *)' - mais êtes-vous sûr que c'est la regex qui pose problème? Utilisez-vous tout le résultat, pas seulement la première capture?

Le contenu après le - devrait être dans le tableau des résultats. Le premier élément correspond à tout le texte correspondant (par exemple "err-test1") et les éléments suivants correspondent aux correspondances entre parenthèses (par exemple "test1").

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

Voici un site de référence .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top