我有一个这样的字符串:
"xyz([x,3],x,[x,y],{y:1})" needs to be "xyz(['x',3],'x',['x','y'],{'y':1})"
注意:在这种情况下,变量可以是从a
到z
的任何字母
我需要用引用的版本
替换x,y和z等变量在我的测试中,正则表达式正在捕获逗号,问题是如果我捕获x,则由于相交的逗号而未捕获y。
var str = "xyz([x,3],x,[x,y],{y:1})"
str.replace(/(\W)([a-z])(\W)/g,"$1'$2'$3")
//output: mul(['x',3],'x',['x',y],{'y':1})
添加了示例:JSFiddle
有没有办法指定周围的元素而不捕获它们?
答案 0 :(得分:0)
这将替换逗号或冒号之前的变量。
var txt="xyz([x,3],x,[x,y],{y:1})";
txt.replace(/[a-z]+[,:\])]/g, function f(x){
return "'"+x.replace(/[,:\]\)]/g,"")+"'"+x[x.length-1];
})
答案 1 :(得分:-1)
您正在添加创建问题的捕获组。删除它们并使用:
\W([a-z])\W
Here是一个有效的版本。
<强>更新强>
使用你的js,
var original = "xyz([x,3],x,[x,y],{y:1})"
var replaced = original.replace(/([a-z])/g, "'$1'")
我已经更新了小提琴。