使用replace和regex来优化JavaScript中每个单词的第一个字母

Dau*_*aud 5 javascript regex capitalization

以下虽然多余,但完美无缺:

'leap of, faith'.replace(/([^ \t]+)/g,"$1");

并打印"信仰的飞跃",但在下面:

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1); 它打印"信仰信仰信仰"

因此,当我希望将每个单词的第一个字符大写为:

'leap of, faith'.replace(/([^ \t]+)/g,RegExp.$1.capitalize());

它不起作用.也没有,

'leap of, faith'.replace(/([^ \t]+)/g,"$1".capitalize);

因为它可能会在取代集团价值之前将"1美元"变为大写.

我想使用prototype的capitalize()方法在一行中完成此操作

Poi*_*nty 12

您可以将函数作为".replace()"的第二个参数传递:

"string".replace(/([^ \t]+)/g, function(_, word) { return word.capitalize(); });
Run Code Online (Sandbox Code Playgroud)

该函数的参数首先是整个匹配,然后是匹配的组.在这种情况下,只有一个组("单词").函数的返回值用作替换.