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

时间:2010-02-19 09:06:34

标签: javascript regex replace typography

我有以下替换功能

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

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

但是上面的$ 1变量对我不起作用。它插入文本“$ 1”而不是原始匹配字符串+ nbsp。

的一部分

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

2 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:5)

似乎你想做这样的事情:

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

但是这样你就会在你的单字母单词之前松开空格。因此,您可能还希望在捕获组中包含第一个\s