Javascript 将/和-字符后的每个字母大写

Javascript 将/和-字符后的每个字母大写,javascript,regex,Javascript,Regex,我试图将/或-字符后的每个字母大写。意思是,如果给定字符串 this/is/a/pretty-cool/url 它的预期产出将是 This/Is/A/Pretty-Cool/Url 我的代码: string = string.replace(/\/(\b[a-z](?!\s))/g, function(i,e) { return '/'+e.toUpperCase() }); 目前返回的 this/Is/A/Pretty-cool/Url 显然,不完全是这样 我如何才能使其按预期工作?这

我试图将
/
-
字符后的每个字母大写。意思是,如果给定字符串

this/is/a/pretty-cool/url
它的预期产出将是

This/Is/A/Pretty-Cool/Url
我的代码:

string = string.replace(/\/(\b[a-z](?!\s))/g, function(i,e) { return '/'+e.toUpperCase() });
目前返回的

this/Is/A/Pretty-cool/Url
显然,不完全是这样


我如何才能使其按预期工作?

这里有一个简单的解决方案:

string = string.replace(/(^|\/|-)(\S)/g, s=>s.toUpperCase())
您只需在字符串开头后匹配一个字符,即
/
-
。这很简单,因为将其中一个字符大写没有问题(
'/'.toUpperCase()
'/'

现在,让我们假设您不想将第一部分大写(可能在实际问题中不同,可能您关心的是必须将a
“/”
)大写的糟糕函数),那么您将使用如下子匹配:

string = string.replace(/(^|\/|-)(\S)/g, (_,a,b)=>a+b.toUpperCase())

(但你不必走到这样的极端)

从你的代码开始,你就缺少了
-
字符

因此,更改代码以支持您可以使用的字符:

var string = string.replace(/(^|\/|-)(\b[a-z](?!\s))/g, function(i,e) { return i.charAt(0)+e.toUpperCase() });


下面是另一个变体,它在任何非单词字符之后以及字符串的开头使用大写字母:

string = string.replace(/(^|\W)(\w)/g, (match, a, b) => a + b.toUpperCase());
(或使用与@DenysSéguret相同的捷径):


您的问题陈述不完整-您似乎还想将找到的第一个字符大写。向下投票者:请告诉我,有什么问题?
string = string.replace(/(^|\W)(\w)/g, (match, a, b) => a + b.toUpperCase());
string = string.replace(/(^|\W)(\w)/g, s => s.toUpperCase());