正则表达式为千位分隔符,不带小数点

时间:2016-04-28 11:09:22

标签: javascript java regex

我有正则表达式,对十进制工作正常。 在下面的表达式中,我想删除十进制匹配以验证整数

^-?(\d*)(,\d{1,3})*(?:[,]|([.]\d{0,2}))?$

有效匹配:1,000& 111,& -1000,00

无效匹配: - ,1& 1 ,,,,

1 个答案:

答案 0 :(得分:1)

使用

^-?(?:\d{1,3}(?:,\d{3})*|\d+)?,?$
    |---1---|
             |---2-----|
                        |-3-|

^断言字符串开头的位置,$断言字符串结尾处的位置。 -?匹配可选的-。第1部分匹配1到3位数,第2部分匹配0 {+ 1}}的序列,后跟3位数,第3部分是第1部分和第1部分的替代。 2个组合并匹配1+位数。整数模式是可选的,因为,使用(?:...|...) - 一次或零次进行量化。

?之前的,?最后允许使用可选的逗号,如果不需要则删除(您提到需要在comments中允许$)。

请参阅regex demo