我有一个动态字符串表达式 var expression =“count + count1 + 12-(count3 + count4)”;
我想在每个字符串中附加v [...],就像输出
一样输出: -
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script>
<div id="listProducts"></div>
我试过这个正则表达式,
v[count]+v[count1]+12-(v[count3]+v[count4]);
是否可以编写正则表达式表达式正则表达式字符串。
答案 0 :(得分:2)
您可以使用
var expression = "count+count1+12-(count3+count4)";
var res = expression.replace(/\b[a-z]\w*/ig, "v[$&]");
console.log(res);
<强>详情:
\b
- 领先的单词边界[a-z]
- ASCII字母\w*
- 0+单词字符([a-zA-Z0-9_]
)。替换包含$&
,这是对整场比赛的反向引用。
另一个解决方案,它与数学运算符分开,只包含v[...]
那些不是数字的子串或运算符:
var expression = "count+count1+12+234.56-(count3+count4)";
var res = expression.split(/([-+\/*])/).map(function(x) {
return /^(\d*\.?\d+|[-*\/+])$/.test(x) ? x : "v["+x+"]";
}).join("");
console.log(res);