JavaScript regex replace - but only part of matched string?

10,143

Solution 1

$1 doesn't work because you don't have any capturing subgroups.

The regular expression should be something like /\b(\w+)\s+/.

Solution 2

Seems you want to do something like this:

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

but that way you will loose the whitespace before your single-letter word. So you probably want to also include the first \s in the capturing group.

Share:
10,143
Josef Richter
Author by

Josef Richter

Updated on June 16, 2022

Comments

  • Josef Richter
    Josef Richter almost 2 years

    I have the following replace function

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

    The aim is to take single-letter words (e.g. prepositions) and add a non-breaking space after them, instead of standard space.

    However the above $1 variable doesn't work for me. It inserts text "$1 " instead of a part of original matched string + nbsp.

    What is the reason for the observed behaviour? Is there any other way to achieve it?