我有这段代码:
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
谢谢!
答案 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());