如何在javascript中用正则表达式引用所有变量名
我有这样一个字符串:如何在javascript中用正则表达式引用所有变量名,javascript,regex,Javascript,Regex,我有这样一个字符串: "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'
"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})
新增示例:
有没有一种方法可以指定周围的元素而不捕获它们?您添加的捕获组会产生问题。移除它们并使用:
\W([a-z])\W
是一个工作版本
更新
使用js
var original = "xyz([x,3],x,[x,y],{y:1})"
var replaced = original.replace(/([a-z])/g, "'$1'")
我已经更新了fiddle。这将替换逗号或冒号之前的变量
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];
})
好的,我添加了一个例子来更好地说明这个问题,你可能是对的,除了你可以在函数名或其他任何地方找到a-z的字母,好的,但是所有其他元素呢,比如)或],问题是它需要在参数中是任何变量名,我刚刚添加了一些变量,但我想你是对的,也许最好的解决方案是添加看起来像人的案例,但我认为
*
应该是+
<代码>*将匹配0个字符中的任何字符,要捕获y,还应添加[,:\])]