Javascript正则表达式删除开头和结尾的特定字符串

时间:2020-09-23 20:54:45

标签: javascript string variables

基于以下字符串

for(var i=0;i<${MyVar}.length;i++){ alert(${MyVar}[i]); }

如何在字符串的开头${和结尾}处删除for(var i=0;i<MyVar.length;i++){ alert(MyVar[i]); } ,以便可以这样使用它?

  var script = document.createElement("script");
  script.innerHTML = "var ... "; // variables
  script.innerHTML += transformCode(code); // code injected
  document.getElementsByTagName("head")[0].append(script);

我正在系统中创建一个组件来注入javascript代码并执行,但是我需要将系统变量替换为javascript变量。

function variableTransform(variables){
  var html = "";
  for(var key in variables) {
    html += "var "+key+" ='"+variables[key]+"';\n";
  }
  //alert(html);
  return html;
}

enter image description here

我已经完成了从对象数组创建变量的工作,就像这样:

-webkit-border-radius: 5px;

2 个答案:

答案 0 :(得分:5)

使用

.replace(/\$\{(\w+)\}/g, '$1')

请参见proof

说明

--------------------------------------------------------------------------------
  \$                       '$'
--------------------------------------------------------------------------------
  \{                       '{'
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    \w+                      word characters (a-z, A-Z, 0-9, _) (1 or
                             more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  \}                       '}'

JavaScript:

const text = 'for(var i=0;i<${MyVar}.length;i++){ alert(${MyVar}[i]); if(${FooBar}) { ${Bazz}(); } }';
console.log(text.replace(/\$\{(\w+)\}/g, '$1'));

答案 1 :(得分:0)

它们是字符串文字,因此让它为您完成工作。

var variables = 'var FooBar = "Chicken"; var Bazz = "Tuna"; var MyVar = "Dog";';
var codeString = "for(var i=0;i<${MyVar}.length;i++){ alert(${MyVar}[i]); if(${FooBar}) { ${Bazz}(); } }";

var temp = (new Function(variables + " return `" + codeString + "`")());

console.log(temp);