javascript – ‘style =“border:none;溢出:隐藏;高度:80px“’到js对象的python re.sub

我是开发人员并与IUEditor合作,它可以从设计中制作html / css / js.

但遗憾的是,我们的项目是由React构成的,所以我必须将html编译为jsx.所以我自己做了,使用python,除了一个.

我必须改变

style=”border:none; overflow:hidden; height:80px”

属于jsx对象,应该是

style={{border: none, overflow: hidden, height:80px}}

您可能会问,为什么不使用https://facebook.github.io/react/html-jsx.html,但实际上IUEditor在其他地方使用它是一个属性,并且jsx默认情况下不允许使用它们.

无论如何,问题是我想通过python re.sub方法将样式html标签更改为jsx的样式对象.我怎样才能做到这一点?!向正则表达大师寻求帮助;)

最佳答案 使用re.search方法可能会更简单.您将获得结果并构建JSX.我在Phyton并不完美,但在JS中这很容易实现

var str = 'style="border:none; overflow:hidden; height:80px"',
    rex = /\s*[\w-]+\s*:\s*[\w-]+\s*/g,
    res = str.match(rex),
    jsx = "style={{" + res[0] + "," + res[1] + "," + res[2] + "}}";

正则表达式应该是相同的.在JS中你得到一系列匹配,在Phyton中你应该以类似的方式返回一个对象.然后就是重新组合字符串了.在控制台上试试吧.

好的,根据评论.以下是此代码段的可重用版本.它应该适用于您的内联样式中可能具有的许多CSS属性.

var str = 'style="border:none; overflow:hidden; height:80px"',
    rex = /\s*[\w-]+\s*:\s*[\w-]+\s*/g,
    res = str.match(rex),
    len = res.length,
    jsx = "style={{";

for (var i = 0; i< len-1; i++){
  jsx = jsx + res[i] + ",";
};
jsx = jsx + res[len-1] + "}}";
点赞