2017-10-13 93 views
1

我有这样的代码:如何替换排除特定字词的字符串?

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

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

这是实现一个字符串的首字母大写,它工作得很好。但是现在我需要“跳过”一些词汇来标题化。

我如何可以修改正则表达式,以跳过此替换如果字是在提供的列表,像(下面的代码不能正常工作,它只是解释):

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

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

谢谢!

+0

这是我使用的代码是什么,但我想,因为它的正则表达式可以推断:) – eestein

回答

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()); 
+0

真棒:)它完美地工作!你太快了我仍然不能接受答案:D谢谢 – eestein

+0

确实是,或者至少应该是! :d – eestein

相关问题