我有一个文本框,用户只能输入以逗号分隔的数字。
例如,用户只能输入 10,11,13,20 ,依此类推。但他们不应该进入 的 010,011,00013,020 即可。
我试过这个,但无济于事
newValue.replace(/[^\d,]+/g, '').replace(/^0+/, '').replace(/,,/g, ',');
这仅限制起始零点,仅限制空格和数字,但不限制中间零点。
是否有任何正则表达式替换上面字符串中的所有前导零,使其成为 10,11,13,20 ,只允许其间有一个逗号
答案 0 :(得分:3)
非常简单,匹配数字序列,每次匹配删除左侧的0:
replace(/0*([0-9]+)/g, "$1")
此处的示例和说明:http://regex101.com/r/xW6dC2
编辑(禁止单个数字0):
replace(/0+,?|0*([0-9]+,?)/g, "$1")
答案 1 :(得分:2)
使用捕获组:
'010,011,00013,020'.replace(/(^|,)0+/g, '$1')
// => "10,11,13,20"
<强>更新强>
要避免从0
或0000
中移除所有0
,请使用以下内容:(负前瞻断言)
'00'.replace(/(^|,)0+(?!$)/g, '$1')
// => "0"
使用单词边界(\b
):
'010,011,00013,020'.replace(/\b0+(?!$)/g, '')
// => "10,11,13,20"
'000'.replace(/\b0+(?!$)/g, '')
// => "0"