match et assertions , impossible à résoudre ?
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):
Code:
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 |
Une erreur courante (qu'on m'a déjà proposée) serait de me répondre:
Code:
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 |
Puisque comme vous le voyez cela récupère tout puisque l'ancrage avec une assertion n'est pas possible.
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 ?