正则表达式如何删除特定单词后的逗号

时间:2016-05-08 10:37:11

标签: javascript regex replace expression

我正在尝试使用正则表达式删除特定单词“SUM('和Before the last')之后的任何逗号”。换句话说,我想删除函数SUM()中的所有开头和结尾逗号。我正在使用javascript函数replace在正则表达式上执行此操作。

以下示例用于说明在使用正则表达式调用替换函数后我要执行的操作:

SUM(,,,,1,2,)  // result should be SUM(1,2)
SUM(,1,2,)    // result should be SUM(1,2)
SUM(,1,2,,,)  // result should be SUM(1,2)
SUM(,,,,1,34) // result should be SUM(1,34)
SUM(,,,,0,0,0) // result should be SUM(0,0,0)

目前我一直在试用这个正则表达式:

(^SUM\()\,|(\,+)\)$

但我只想匹配“SUM('和最后一个括号之前')之后的逗号。”请有人帮助我。

2 个答案:

答案 0 :(得分:2)

使用此模式:

/(^SUM)\(,*(.*?),*\)/gm

并将其替换为$1($2)

Online Demo

答案 1 :(得分:0)

用一个逗号替换多个逗号,然后修复开头和结尾:

str . 
  replace(/,+/g, ',') . 
  replace(/\(,/, '(') . 
  replace(/,\)/, ')')

如果您不关心删除项目之间的多个逗号,那么

str . replace(/\(,+/g, '(') . replace(/,+\(/, '(')

您可以将这些组合成一个正则表达式



var str = "SUM(,1,2,,,)";
var result = str.replace(/(\(),+|,+(\))|(,),*/g, '$1$2$3')
//                        ^^^^^^               MATCH (,,,
//                               ^^^^^^        MATCH ,,,)
//                                      ^^^    MATCH commas between items
                             

document.write(result);