Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式替换字符串的一部分_Javascript_Regex - Fatal编程技术网

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>