使用正则表达式替换javascript中的所有String

时间:2016-12-06 10:10:23

标签: javascript regex replace

我有一个动态字符串表达式  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]);

是否可以编写正则表达式表达式正则表达式字符串。

1 个答案:

答案 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);