Bonjour à tous,
J'ai cru comprendre que JS ne gère pas les assertions du coup je ne sais pas comment écrire cette REGEXP (que j'ai essayé d'écrire de plusieurs façons, qui fonctionnent toutes en PHP):
Une erreur courante (qu'on m'a déjà proposée) serait de me répondre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var monMotif = new RegExp('\babc=([^;]+);?', 'g'), myString = 'abc=abc0; aabc=aabc; abc=abc1; aaabc=aaabc aabc=aabc; abc=abc2'; document.write(myString.match(monMotif)); // null monMotif = new RegExp('(?<!\w)abc=([^;]+);?'); document.write(myString.match(monMotif)); // invalid regexp group monMotif = new RegExp('(?:\A|;\s)abc=([^;]+);?'); document.write(myString.match(monMotif)); // null
Puisque comme vous le voyez cela récupère tout puisque l'ancrage avec une assertion n'est pas possible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 monMotif = new RegExp('(?:;\s)?abc=([^;]+);?', 'g'); document.write(myString.match(monMotif)); // abc=abc0;,abc=aabc;,abc=abc1;,abc=aaabc aabc=aabc;,abc=abc2
PS: je sais qu'on peut résoudre ce problème autrement, j'aimerais juste savoir si il y a un moyen de le résoudre en JS avec des REGEXP.
PS2: ne faites pas attention à l'objet RexExp, j'ai fait un copier collé qui contenait une variable dans la RegEx (d'où l'obligation de créer un objet).
Quelqu'un a une idée ?
Partager