我有一个动态字符串表达式 var 表达式 = "count+count1+12-(count3+count4)";
我想在每个字符串中附加 v[...],就像这样的输出
输出:-
v[count]+v[count1]+12-(v[count3]+v[count4]);
我尝试过这个正则表达式,
expression = expression.replace(/[a-z]+|[A-Z]+/g, "v["/$1/"]").replace(/[\(|\|\.)]/g, "");
是否可以编写正则表达式正则表达式字符串。
最佳答案
您可以使用
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);
关于javascript - 使用正则表达式替换javascript中的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40992739/