JavaScript регулярное выражение заменить - но только часть совпадающей строки? - PullRequest
7 голосов
/ 19 февраля 2010

У меня есть следующая функция замены

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

Цель состоит в том, чтобы взять однобуквенные слова (например, предлоги) и добавить неразрывный пробел после них вместо стандартного пробела.

Однако указанная выше переменная $ 1 не работает для меня. Он вставляет текст «$ 1» вместо части оригинальной совпавшей строки + nbsp.

В чем причина наблюдаемого поведения? Есть ли другой способ добиться этого?

Ответы [ 2 ]

9 голосов
/ 19 февраля 2010

$ 1 не работает, потому что у вас нет подгрупп захвата.

Регулярное выражение должно быть что-то вроде /\b(\w+)\s+/.

5 голосов
/ 19 февраля 2010

Кажется, вы хотите сделать что-то вроде этого:

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

но таким образом вы потеряете пробел перед вашим однобуквенным словом. Таким образом, вы, вероятно, хотите также включить первый \s в группу захвата.

...