我有以下替换函数
myString.replace(/\s\w(?=\s)/,"$1\xA0");
本文旨在将单个字母的词(例如介词)之后的标准空格替换为不间断空格。
然而,上述$1变量对我无效。它插入了文本"$1 ",而不是原始匹配字符串的一部分 + nbsp。
观察到这种行为的原因是什么?还有其他实现方法吗?
myString.replace(/\s\w(?=\s)/,"$1\xA0");
本文旨在将单个字母的词(例如介词)之后的标准空格替换为不间断空格。
然而,上述$1变量对我无效。它插入了文本"$1 ",而不是原始匹配字符串的一部分 + nbsp。
观察到这种行为的原因是什么?还有其他实现方法吗?
$1不能工作,因为您没有任何捕获子组。
正则表达式应该类似于/\b(\w+)\s+/
。
看起来您想要做类似于这样的事情:
myString.replace(/\s(\w)\s/,"$1\xA0");
但是这样你会失去单字母词前面的空格。因此,你可能还想在捕获组中包括第一个\s
。