Je n'arrive pas à trouver comment remplacer le dernier ',' dans une chaîne par 'et':
Ayant cette chaîne: Test1, test2, test3
et je veux finir avec: test1, test2 et test3
J'essaie quelque chose comme ça:
var dialog = 'test1, test2, test3';
dialog = dialog.replace(new RegExp(', /g').lastIndex, ' and ');
mais ça ne marche pas
foo.replace(/,([^,]*)$/, ' and $1')
utilisez l’ancre $
( end of line ) pour vous indiquer votre position et recherchez un motif à droite de l’index des virgules qui n’inclut pas d’autres virgules.
Modifier:
Ce qui précède fonctionne exactement pour les exigences définies (bien que la chaîne de remplacement soit lâche de manière arbitraire), mais basé sur les critiques de commentaires, le texte ci-dessous reflète mieux l'esprit de l'exigence initiale.
console.log(
'test1, test2, test3'.replace(/,\s([^,]+)$/, ' and $1')
)
result = dialog.replace(/,\s(\w+)$/, " and $1");
$1
fait référence au premier groupe de capture (\w+)
de la correspondance.
modèle de recherche regex\s ([^,] +) $
Line1: If not, sdsdsdsdsa sas ., sad, whaterver4
Line2: If not, fs sadXD sad , ,sadXYZ!X
Line3: If not d,,sds,, sasa sd a, sds, 23233
Rechercher avec des motifs trouvés Ligne1: whaterver4 Ligne3: 23233
Pourtant, ne trouve pas Line2: sadXYZ! X
Il ne manque qu'un espace