3

我有一个非常简单的字符串:

data="1,2,3,4,5,"

我想在一位数字前添加两个空格。

所以我使用这个“非常非常简单”的正则表达式:

data = data.replace(/,\s*(\d),/g,",  $1,");

但输出是:

"1,  2,3,  4,5"

见: http ://tinyurl.com/a8njw65

我完全糊涂了。对我来说它必须工作:我没有发现任何错误。但它不起作用,所以我陷入了僵局。

4

3 回答 3

2

尝试这个。

"1,24,3,4,56".replace(/,\s*(\d)(?=,|$)/g,", $1");

于 2013-03-08T16:45:37.520 回答
2

它确实有效。您在正则表达式中的 2 之后包含逗号,这意味着逗号不能成为正则表达式的下一个匹配项的一部分。

于 2013-03-08T16:43:23.987 回答
1

问题是表达式消耗了,并且下一个匹配将找不到它。要解决它,您可以使用环视。例如:

"1,24,3,4,56".replace(/,\s*(\d)(?!\d)/g,",  $1");
"1,24,3,4,56".replace(/,\s*(?=\d(?!\d))/g,",  ");
"1,24,3,4,56".replace(/,\s*(?=\d(,|$))/g,",  ");
于 2013-03-08T17:08:11.423 回答