如何在javascript中使用正则表达式引用所有变量名称

时间:2017-02-13 04:54:49

标签: javascript regex

我有一个这样的字符串:

"xyz([x,3],x,[x,y],{y:1})" needs to be "xyz(['x',3],'x',['x','y'],{'y':1})"

注意:在这种情况下,变量可以是从az的任何字母

我需要用引用的版本

替换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

有没有办法指定周围的元素而不捕获它们?

2 个答案:

答案 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'")

我已经更新了小提琴。