parce que String.match prend en paramètre une expression régulière et là tu lui balances une chaîne de caractère.
Le mieux c'est de faire ça :
Code :
- string.match(/<url>(.*?)<\/url>/)
|
D'ailleurs combien veux-tu récupérer de <url></url> dans ta string ?
Car si tu veux tous les récupérer le flag /g est mieux et si tu ne veux garder que le contenu il faudra passer par deux étapes, un match puis un map .
Code :
- var reg = /<url>(.*?)<\/url>/g;
- var result = ("<url>fdsfsdfsd</url>sdfsdf<url>totot</url>".match(reg) || []).map(function(str) {
- return str.replace(reg, '$1');
- });
|
Sinon il y a d'autres solutions :
Code :
- var result;
- var str = "<url>fdsfsdfsd</url>sdfsdf<url>totot</url>";
- var regex = /<url>(.*?)<\/url>/g;
- // ==============================
- result = (str.match(regex) || []).map(function(str) {
- return str.replace(regex, "$1" );
- });
- // ==============================
- result = [];
- str.replace(regex, function(a, match) {
- result.push(match);
- });
- // ==============================
- result = Array.from(str.matchAll(regex), function(x) {
- return x[1];
- });
- // ==============================
- console.log(result);
|
Message édité par gatsu35 le 12-06-2019 à 23:19:25