在javascript中大写连字符的名称

在javascript中大写连字符的名称,javascript,regex,Javascript,Regex,我需要在javascript中使用大写的名称,到目前为止,我已经找到了以下方法: // doesn't capitalize first letter after hyphen -> gives Bjørn-martin str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); // capitalizes after hyphe

我需要在javascript中使用大写的名称,到目前为止,我已经找到了以下方法:

// doesn't capitalize first letter after hyphen -> gives Bjørn-martin
str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });

// capitalizes after hyphen, but also after funny Norwegian characters (æøå) -> gives BjøRn-Martin
str.replace(/\b[\w']+\b/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });

// same as first
str = str.toLowerCase().replace(/^[\u00C0-\u1FFF\u2C00-\uD7FF\w]|\s[\u00C0-\u1FFF\u2C00-\uD7FF\w]/g, function(letter) {
    return letter.toUpperCase();
});
当试图大写比约恩·马丁(bjørn martin)时,他们中没有一个能同时处理有趣的挪威字符和连字符


我并不完全精通正则表达式,我想知道是否有人能给我指出正确的方向,以便
bjørn martin
正确地大写为
bjørn martin

,这应该适合您的需要:

var capitalized = input.replace(/(^|[\s-])\S/g, function (match) {
    return match.toUpperCase();
});

这应该适合您的需要:

var capitalized = input.replace(/(^|[\s-])\S/g, function (match) {
    return match.toUpperCase();
});

这里是一个可配置的方法。这将允许您指定单词分隔符

您需要的模式:
/(^ |-)(\w)/g

function transformToUpperCase(str、分隔符){
分离器=分离器| |[''];
var regex=new RegExp('(^ |['+分隔符.join('')+'])(\\w''g');
return str.toLowerCase().replace(regex,函数(x){return x.toUpperCase();});
}

document.body.innerHTML=transformToUpperCase('bjørn martin',['-'])这里是一个可配置的方法。这将允许您指定单词分隔符

您需要的模式:
/(^ |-)(\w)/g

function transformToUpperCase(str、分隔符){
分离器=分离器| |[''];
var regex=new RegExp('(^ |['+分隔符.join('')+'])(\\w''g');
return str.toLowerCase().replace(regex,函数(x){return x.toUpperCase();});
}

document.body.innerHTML=transformToUpperCase('bjørn martin',['-'])你是否考虑使用?你是否考虑使用?这在所有可能的情况下都不起作用。你应该在答案中添加假设。@WiktorStribiżew我相信它可以处理有趣的挪威字符和连字符,除非我缺少边缘案例?我发现了一个无法使用的案例“詹姆斯·邦德”给了“詹姆斯·邦德”。我在问题中没有提到它,但我认为很明显,不仅名字应该大写:)这在所有可能的情况下都不起作用。你应该在答案中添加假设。@WiktorStribiżew我相信它可以处理有趣的挪威字符和连字符,除非我缺少边缘案例?我发现了一个无法使用的案例“詹姆斯·邦德”给了“詹姆斯·邦德”。我在问题中没有提到它,但我认为很明显,不仅名字应该大写:)如果名字以“有趣”字母开头,这将不起作用。非常感谢适用于法语连字号名称如果名字以“有趣”字母开头,这将不起作用。非常感谢适用于法语连字号名称