如何替换不包含特定单词的字符串?

时间:2017-10-13 16:27:08

标签: javascript regex

我有这段代码:

text.replace(/(?:^|\s)\S/g, c => c.toUpperCase());

https://regex101.com/r/vD4aGJ/1

这是为了在字符串上实现TitleCase,它工作得很好。但是现在我需要“跳过”某个词组,而不是标题。

如果单词在提供的列表中,如何修改该正则表达式以跳过此替换(如下面的代码不起作用,只是为了解释):

/(?:^|\s)\S^(of|from)/g

通过输入from the house of cards来打印from The House of Cards而不是当前输出From The House Of Cards

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用

\b(?!(?:from|of)\b)[a-z]

请参阅a demo on regex101.com 这样可以使用负向前瞻和非捕获组,其中列出了您要排除的单词

<小时/> 所以在JS代码中,这将是

text.replace(/\b(?!(?:from|of)\b)[a-z]/g, c => c.toUpperCase());