不替换撇号的正则表达式的第二种模式

问题描述 投票:0回答:1

我正在创建一个与直撇号匹配的正则表达式,并将其替换为大括号。有时撇号在两个字符的中间。其他时间在字符/单词的末尾(例如省略号)。

因此,我有两个处理两种情况的正则表达式(用or语句分隔)。

但是,仅第一种情况会被替换,第二种情况不会被替换。换句话说,这是:

"Wor'd word'".replace(/(?<=\w)\'(?=\w)|(?<=\w)\'(?=\s)/, '&rsquo;') 

成为此:

"Wor&rsquo;d word'"

这使我感到困惑,因为两种撇号都匹配:https://regexr.com/4td7p

这是为什么,以及如何解决它?

Update:我发现问题是最后一个撇号后没有空格,因此我将正则表达式的第二部分更改为:(?<=\w)\'(?!\w)(如果撇号后有字符,则不匹配) 。但是我得到了相同的结果。

javascript regex
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.