Javascript 使用正则表达式从数组中删除零
我从Photoshop中得到一个直方图数组作为字符串Javascript 使用正则表达式从数组中删除零,javascript,regex,photoshop-script,Javascript,Regex,Photoshop Script,我从Photoshop中得到一个直方图数组作为字符串 var rArray = activeDocument.channels["Red"].histogram.toString() 对于那些没有Photoshop的人,只需忽略这个细节,因为它将是一个类似于 66500,0,0,0,0,0,0,0,0,0,10000,0,0,0,0,0,0,0... 0,0,0,0,0,0,0,0,750,0,0,0,0,0,0,0,0,0,0... 目前,我有一个函数来循环(字符串作
var rArray = activeDocument.channels["Red"].histogram.toString()
对于那些没有Photoshop的人,只需忽略这个细节,因为它将是一个类似于
66500,0,0,0,0,0,0,0,0,0,10000,0,0,0,0,0,0,0...
0,0,0,0,0,0,0,0,750,0,0,0,0,0,0,0,0,0,0...
目前,我有一个函数来循环(字符串作为一个数组)并删除任何零值。然而,我相信它可以用正则表达式来完成。只不过我选了一个我想保留的数字的零
.replace(/(,0)/g,"")
只有这样才会回来
665010000
75
而不是
66500
750
预期的输出是消除所有零
66500,10000
750
看到了吗
我很确定这只能作为正则表达式来完成,我不知道如何指定“0”或“0$”零以及逗号或零和结束字符串。模式/^0 |,0/g应该可以做到这一点 请点击此处: regexr.com/5akbq您可以使用
^(?:0,)+|(?:,0)+$|\b0,
见
详细信息
-从字符串开始出现一个或多个^(?:0,)+
子字符串0,
-或|
-一次或多次出现(?:,0)+$
子字符串,直到字符串结束,0
-或|
-单词边界,后跟\b0,
子字符串0,
。替换(/,?\b0\b,/g.)
。或者,.replace(/^(?:0,)*(\d+).*/,“$1”)
。它必须是正则表达式吗?您不能在数组本身上使用.filter
过滤掉零,然后在生成的数组上调用.toString
吗?虽然第一个正则表达式不需要括号,但它应该可以工作。你能做一个片段来显示这种行为吗。@Phillip很遗憾,我使用的Photoshop的ECMAScript中没有过滤功能。@Keith我添加了一个regex101链接,如果这样就足够了,而不是JSFIDLE(我没有使用过)