Javascript 使用正则表达式替换字符串的一部分
我有一个用字符串包装的脚本,如下所示:Javascript 使用正则表达式替换字符串的一部分,javascript,regex,Javascript,Regex,我有一个用字符串包装的脚本,如下所示: <script async defer> { "height": "800", "c": "d", "e": "f", "g": "h" ... } </script> { “高度”:“800”, “c”:“d”, “e”:“f”, “g”:“h” ... } 我正在
<script async defer>
{
"height": "800",
"c": "d",
"e": "f",
"g": "h"
...
}
</script>
{
“高度”:“800”,
“c”:“d”,
“e”:“f”,
“g”:“h”
...
}
我正在寻找一种改变内部对象属性的方法
背景:
脚本被传递给React组件。如果传递了比例道具,则组件应在对象内找到“高度”特性,计算比例,并将其替换为新的缩放高度
e、 g
这是一个获取脚本内容的简单解决方案
然后在给定的高度上运行一个替代品。
高度和比例必须存在,才能使更改生效
var str=''+“\n”+
“{”+“\n”+
““高度”:”800“,“+”\n”+
““c”:“d”,“+”\n”+
““e”:“f”,“+”\n”+
““g”:“h”+“\n”+
“…”+“\n”+
“}”+“\n”+
'比例=.5'+“\n”+
''+“\n”
;
//log(“From:\n”+str);
var fix=str.replace(
/([^>])?)+)\2)?\s*>([\s\s]*?)()/g,
功能(m、a、b、c、d)
{
var含量=c;
如果(content.length==0)
返回m;
内容=内容。替换(
/{[\S\S]*?(“\S*高度\S*”\S*:\S*”\S*)(\d+)(\S*“[\S\S]*?}[\S\S]*?)[^\S\r\n]*比例\S*=\S*(\d+(?:\。\d*)?\124;\。\ d+(\r?\n)?/,
功能(M、A、B、C、D)
{
var tdd=B*D;
返回A+tdd+C;
});
返回a+content+d;
});
//console.log(“To:\n”+fix);
控制台日志(fix)代码>您的字符串有一个开始和结束脚本标记,并且。。。JSON
因此,您最好提取JSON部分,解析它,操作它,然后(如果真的有必要)将结果放回脚本包装器中
以下是一些您可以使用的代码:
函数updateProp(str、key、value){
let[,before,json,after]=str.match(/^([^{[]*)([^]*[}\]])([^]*$/);
让obj=JSON.parse(JSON);
obj[键]=值;
在+JSON.stringify(obj)+after之前返回;
}
//示例用法:
设str=`
{
“高度”:“800”,
“c”:“d”,
“e”:“f”,
“g”:“h”
}
比例=.5
`;
str=updateProp(str,“高度”,“400”);
console.log(str)代码>当然,我添加了一些上下文不知道,但是谢谢你,伙计@x15已打开。您可以回答它。scale=.5
在那里做什么,为什么稍后不在那里?您好,您阅读了我的评论吗?谢谢您的帮助:)
<Component
script="<script>
{
"height": "800",
"c": "d",
"e": "f",
"g": "h"
...
}
scale=.5
</script>
<script>
{
"height": "400",
"c": "d",
"e": "f",
"g": "h"
...
}
</script>