'style="border:none; overflow:hidden; height:80px"' 通过 python re.sub 到 js 对象
'style="border:none; overflow:hidden; height:80px"' to js object by 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] + "}}";
我是前端开发人员并与 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] + "}}";