Javascript 将属性拆分为对象排除在字符串中

标签 javascript css regex

将 css 属性从字符串拆分或提取到对象中的最佳方法是什么?

var cssProperties = 'background:green;content:"Content;";color:pink;';

上面的结果应该是下面的

var theObject = {
    background:'green',
    content:'"Content;"',
    color:'pink'
}

不幸的是,由于 url 中的分号,我不能只使用 split(";") 并循环遍历数组。我可以创建一个巨大的循环,在跳过“;”的同时循环遍历每个字符。只是用引号括起来,但这似乎有点不对。

有正则表达式技巧吗?

可选: 也有任何非常好的正则表达式网站。我了解大部分语法,但在我找到的大多数网站上似乎没有很多实用且非常复杂的示例。

最佳答案

这是进一步演示该功能的 fiddle :http://jsfiddle.net/ZcEUL/

(function() {
    var div = document.createElement('div'),
        rprops =/[\w-]+(?=:)/g,
        rcamelCase = /-(\D)/g,
        fcamelCase = function(a,letter) {
                return letter.toUpperCase();
            };
    window['styleToObject'] = function(str) {
        var props = str.match(rprops),
            prop, i = 0,
            theObject = {};
        div.style.cssText = str;
        while (prop = props[i++]) {
            var style=div.style[prop.replace(rcamelCase,fcamelCase)];
            if (style) {
                theObject[prop] = style;
            }
        }
        return theObject;
    };
})();

关于Javascript 将属性拆分为对象排除在字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038492/

相关文章:

javascript - 如何检测元素的点击

javascript - Javascript 中等效的 C/C++ 数据结构是什么?

javascript - header 中带有 javascript 链接的 JQuery slidetoggle div 不会触发

html - 创建图像网格 - bootstrap4

javascript - 为什么当我尝试针对正则表达式对其进行测试时字符串会消失?

javascript - React Native Chart 不显示数据

html - 自定义 CSS 不会覆盖默认的 Bootstrap CSS

html - 消除 Chrome 在 html 表单的文本字段中所做的黄色突出显示

javascript - 如何替换 javascript 中的多个斜杠?

javascript - 使用 Regex 解析字符串 - 可选的捕获组