JavaScript正则表达式替换 - 但只是匹配字符串的一部分?

Jos*_*ter 7 javascript regex replace typography

我有以下替换功能

myString.replace(/\s\w(?=\s)/,"$1\xA0");
Run Code Online (Sandbox Code Playgroud)

目的是采用单字母单词(例如介词)并在它们之后添加不间断的空格,而不是标准空间.

但是上面的$ 1变量对我不起作用.它插入文本"$ 1"而不是原始匹配字符串+ nbsp的一部分.

观察到的行为是什么原因?有没有其他方法可以实现它?

use*_*291 9

$ 1不起作用,因为您没有任何捕获子组.

正则表达式应该是这样的/\b(\w+)\s+/.


Tur*_*smo 5

似乎你想做这样的事情:

myString.replace(/\s(\w)\s/,"$1\xA0");
Run Code Online (Sandbox Code Playgroud)

但是这样你就会在单字母之前松开空白.所以你可能还希望\s在捕获组中包含第一个.