在nodejs中替换条件正则表达式

时间:2016-11-15 10:59:11

标签: javascript regex node.js

我有这样的地址:

117042,ABC DEF,HIJ KLMNOP,9,170

并希望拥有

117042,ABC DEF,HIJ KLMNOP 9 170

我尝试使用此替换Regex

address = address.replace(/,[\d]/g, " ");

但这会导致

117042,ABC DEF,HIJ KLMNOP  70

我不想替换数字,但仍需要检查数字是否在逗号之后与其他逗号不匹配。

我对正则表达式不是很好,这就是我寻求帮助的原因。

1 个答案:

答案 0 :(得分:3)

如果数字出现在字符串末尾,则只能在数字后面替换逗号:

var s = "117042,ABC DEF,HIJ KLMNOP,9,170";
var res = s.replace(/,(\d+)(?=(?:,\d+)*$)/g, " $1");
console.log(res);

,(\d+)(?=(?:,\d+)*$)正则表达式匹配:

  • , - 逗号
  • (\d+) - (第1组,通过替换模式中的$1引用)一个或多个数字
  • (?=(?:,\d+)*$) - 一个积极的前瞻,需要0 + ,个序列,在字符串末尾有一个或多个数字。