我有正则表达式,对十进制工作正常。 在下面的表达式中,我想删除十进制匹配以验证整数
^-?(\d*)(,\d{1,3})*(?:[,]|([.]\d{0,2}))?$
有效匹配:1,000& 111,& -1000,00
无效匹配: - ,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