2013-07-24 48 views
0

我使用的是regex这让我95%的方式出现:正则表达式的功能,使一个单词首字母大写(包括连字符)

var string = element.replace(/([^\W_]+[^\s\u2014\u002E]*) */g, function(txt){ 
     return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); 
}) 

正则表达式应该采取任何字符串,并以标题情况下归还。例如:

hello -> Hello //作品

hElLo mY nAme Is -> Hello My Name Is //作品

What-did-you-say-to-me? -> What-Did-You-Say-To-Me? //无效(连字符后的所有字符都返回小写

如果有任何其他情况下,我。没有考虑请让我知道,我不希望除了满座和破折号以外的特殊字符被计算在内(例如,我不想在撇号后面加上大写)

+2

尝试'/ \ b \ w + \ b/g' – FrankieTheKneeMan

+1

@FrankieTheKneeMan这不适用于撇号,例如。 “不”将转向“不要”而不是“不要”。 –

+1

@BrianRogers良好的捕捉。 '/ [\ w'] + /'(我觉得字边界是不必要的)。 – FrankieTheKneeMan

回答

1

您可以使用单词边界断言\b更容易找到的话:

/\b[\w']+\b/g 

这将找到的起始字边界,所有的“字”字和撇号,紧接着又字边界。由于破折号应该算作单词的边界,这应该会吸引你的问题文字。

+0

为我工作,欢呼! – Jascination

相关问题