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

7
我有以下替换函数
myString.replace(/\s\w(?=\s)/,"$1\xA0");

本文旨在将单个字母的词(例如介词)之后的标准空格替换为不间断空格。

然而,上述$1变量对我无效。它插入了文本"$1 ",而不是原始匹配字符串的一部分 + nbsp。

观察到这种行为的原因是什么?还有其他实现方法吗?

2个回答

9

$1不能工作,因为您没有任何捕获子组。

正则表达式应该类似于/\b(\w+)\s+/


是的,那个“捕获组”就是我缺少的部分。非常感谢! - Josef Richter
谢谢。这个文档不是很好,我无法弄清楚。 - Christian Vincenzo Traina

5

看起来您想要做类似于这样的事情:

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

但是这样你会失去单字母词前面的空格。因此,你可能还想在捕获组中包括第一个\s


嘿,这个像魔法般地运行!太棒了,非常感谢。我不知道“捕获组”的存在,但是我有些怀疑会有这样的东西。 - Josef Richter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接