正则表达式匹配冒号之前的所有超值并用大写

时间:2017-11-01 13:55:18

标签: javascript regex

我当前的代码



var test = {
  'font-family-regular': 'Helvetica-Neue',
  'font-family-bold': 'Helvetica-Neue-Bold'
}

var styles = JSON.stringify(test);
styles = styles.replace(/(-.)/g, function(x) {
  return x[2].toUpperCase()
});
console.log(styles)




我要求在冒号前匹配所有连字符,并将前面的字符修改为大写

e.g。     font-family-regular:' Helvetica-Neue'

应该成为:fontFamilyRegular:' Helvetica-Neue'

我目前使用的正则表达式替换了所有连字符,包括' Helvetica-Neue'

text.replace(/(-.)/g, function(x){return x[1].toUpperCase()})

我希望上面的例子看起来像:

var test = {
  fontFamilyRegular: 'Helvetica-Neue',
  fontFamilyBold: 'Helvetica-Neue-Bold'
}

3 个答案:

答案 0 :(得分:2)

我可能会独立处理属性的两个部分:



var text = "font-family-regular: 'Helvetica-Neue'";

var keyValue = text.split(':');

var result = keyValue
    .shift()
    .replace(/(-.)/g, function(x){
         return x[1].toUpperCase()
    }) + ':' + keyValue.join(' ');

alert(result);




或者更新了您的问题:



var test = {
  'font-family-regular': 'Helvetica-Neue',
  'font-family-bold': 'Helvetica-Neue-Bold'
}

var style = {};
for (var key in test) {
    var newKey = key.replace(/(-.)/g, function(x) {
        return x[1].toUpperCase();
    });
    style[newKey] = test[key];
}

alert(JSON.stringify(style));




答案 1 :(得分:0)

您可以循环键并直接重命名键。

Object.keys(test).forEach(function(item){ 
        var newItem = item.replace(/\s*-\s*./g, function(x){
               return x[x.length-1].toUpperCase();
        }); 
        test[newItem]=test[item];
        delete test[item];
 })

答案 2 :(得分:0)

谢谢大家,根据给出的答案,我设法让这个工作。