2010-02-19 49 views
7

我有以下替换功能JavaScript的正则表达式替换 - 但只有部分匹配的字符串?

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

目的是采取单字母的单词(例如,介词)和之后将其添加而不是标准的空间中的非间断空间,。

但是,上述$ 1变量不适用于我。它插入文本“$ 1”而不是原始匹配的字符串+ nbsp的一部分。

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

回答

9

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

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

+0

是的,那个“捕捉小组”是我失踪的作品。非常感谢你! – 2010-02-19 09:52:15

+0

谢谢。这是没有很好的文件,我不知道它 – 2017-11-03 08:18:32

5

看来想要做这样的事情:

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

,但这样你将你的单字母词之前松散的空白。所以你可能还想把第一个\s包含在捕获组中。

+0

嘿,这个作品像魅力!真棒,非常感谢你。我不知道有关“抓捕组”的情况,但有些可疑。 – 2010-02-19 09:51:42