如何使正则表达式匹配两个参数并将它们分组

问题描述 投票:-1回答:2
function toCamelCase(str){

 str.replace(/_(.)/g, function(match, group1) {
        return group1.toUpperCase();
    });

}

我正在尝试编写用于将字符串更改为CamelCase的代码。测试用例中的字符串具有下划线分隔符和破折号分隔符。所以目前,上面的代码适用于下划线而不是破折号。如何将表达式添加到表达式中,使其指示它与短划线或下划线匹配。

javascript regex replace
2个回答
1
投票

如果你需要在单个字符之间交替,表达它的最佳方式是使用character class

function toCamelCase(str){
 return str.replace(/[_-](.)/g, function(match, group1) {
        return group1.toUpperCase();
    });
}

var s = "hi-there, go_to camel-case"
alert(toCamelCase(s))

旁注:在字符类中放置短划线时需要小心,因为它也可以用作范围指示符(如[a-z]中所示)。但是如果破折号位于角色类的开头或结尾(如我们的正则表达式),它确实与文字破折号相匹配。


0
投票

尝试在这两个可能的字符之间使用管道,这里(_|-)表示下划线或短划线字符。

function toCamelCase(str){

 str.replace(/(?:_|-)(.)/g, function(match, group1) {
        return group1.toUpperCase();
    });

}
© www.soinside.com 2019 - 2024. All rights reserved.