2010-02-19 7 views
7

Je Substituer la fonctionLa regex JavaScript remplace - mais seulement une partie de la chaîne correspondante?

myString.replace(/\s\w(?=\s)/,"$1\xA0"); 

L'objectif est de prendre les mots d'une seule lettre (par exemple prépositions) et ajouter un espace insécable après eux, au lieu de l'espace standard.

Cependant la variable $ 1 ci-dessus ne fonctionne pas pour moi. Il insère le texte "$ 1" au lieu d'une partie de la chaîne correspondante originale + nbsp.

Quelle est la raison du comportement observé? Y a-t-il un autre moyen de l'atteindre?

Répondre

9

$ 1 ne fonctionne pas car vous n'avez aucun sous-groupe de capture.

L'expression régulière doit être quelque chose comme /\b(\w+)\s+/.

+0

oui, ce "groupe de capture" était la pièce qui me manquait. Merci beaucoup! –

+0

Merci. Ce n'est pas bien documenté et je ne pouvais pas le savoir –

5

Semble que vous voulez faire quelque chose comme ceci:

myString.replace(/\s(\w)\s/,"$1\xA0"); 

mais cette façon, vous perdrez l'espace avant votre mot une seule lettre. Donc, vous voulez probablement inclure également le premier \s dans le groupe de capture.

+0

hey, cela fonctionne comme le charme! génial, merci beaucoup. Je ne savais pas à propos de "capturer un groupe" mais j'étais méfiant, il y a quelque chose comme ça. –

Questions connexes