Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中用正则表达式引用所有变量名_Javascript_Regex - Fatal编程技术网

如何在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,还应添加
[,:\])]