正则表达式删除逗号分隔字符串中的前导零

时间:2014-05-27 13:09:26

标签: javascript regex

我有一个文本框,用户只能输入以逗号分隔的数字。

例如,用户只能输入 10,11,13,20 ,依此类推。但他们不应该进入 的 010,011,00013,020 即可。

我试过这个,但无济于事

    newValue.replace(/[^\d,]+/g, '').replace(/^0+/, '').replace(/,,/g, ',');

这仅限制起始零点,仅限制空格和数字,但不限制中间零点。

是否有任何正则表达式替换上面字符串中的所有前导零,使其成为 10,11,13,20 ,只允许其间有一个逗号

2 个答案:

答案 0 :(得分:3)

非常简单,匹配数字序列,每次匹配删除左侧的0:

replace(/0*([0-9]+)/g, "$1")

此处的示例和说明:http://regex101.com/r/xW6dC2

编辑(禁止单个数字0):

replace(/0+,?|0*([0-9]+,?)/g, "$1")

http://regex101.com/r/qT7zU1

答案 1 :(得分:2)

使用捕获组:

'010,011,00013,020'.replace(/(^|,)0+/g, '$1')
// => "10,11,13,20"

<强>更新

要避免从00000中移除所有0,请使用以下内容:(负前瞻断言)

'00'.replace(/(^|,)0+(?!$)/g, '$1')
// => "0"

使用单词边界(\b):

'010,011,00013,020'.replace(/\b0+(?!$)/g, '')
// => "10,11,13,20"
'000'.replace(/\b0+(?!$)/g, '')
// => "0"