2010-09-30 4 views

Répondre

36
foo.replace(/,([^,]*)$/, ' and $1') 

utiliser le $ (fin de ligne) ancre pour vous donner votre position, et cherchez un modèle à droite de l'index par des virgules qui ne comprend pas plus loin des virgules.

Edit:

Les travaux ci-dessus exactement pour les exigences définies (bien que la chaîne de remplacement est arbitrairement lâche), mais sur la base de critiques de la part des commentaires ci-dessous le reflète mieux l'esprit de l'exigence initiale.

foo.replace(/,\s([^,]+)$/, ' and $1') 
+0

+1, probablement préférable à l'utilisation de '\ w' comme splash l'a fait car il est plus inclusif, exemple: http://jsbin.com/utedu/2 –

+0

Cela correspond également' test1, test2, 'et produit' test1, test2 et pour ça. Il insère également un caractère espace redondant pour la chaîne d'entrée d'origine, car il oublie de faire correspondre le caractère espace après le ','. – splash

+1

@splash - voir modifier. Je suis assez confiant que le PO aurait pu faire cette modification lui-même si l'exigence est plus détaillée qu'exprimée, je ne veux pas faire de présomptions sur ce que les gens voulaient vraiment dire. – annakata

4
result = dialog.replace(/,\s(\w+)$/, " and $1"); 

$1 fait référence au premier groupe de capture (\w+) du match.

+1

Exemple: http://jsbin.com/utedu –

+0

Ce wi Il échouera pour des chaînes comme 'test-1, test-2, test-3', mais encore une fois je suis confiant que le PO peut faire de telles adaptations lui-même. – annakata

+0

C'est vrai @annakata. – splash

0

regex modèle de recherche \ 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 

Recherche avec des motifs trouve Ligne1: whaterver4 Line3: 23233

Pourtant, ne marche pas trouver Line2: sadXYZ! X
Ce qui manque seulement un espace

Questions connexes