我需要使用正则表达式验证输入类型是否是具有某些规范的数字。该数字可以包含任意数量的逗号(,)但不能包含点(。),但逗号和点不应该并排,例如
12,34,56,7.89 - 正确--- 1
12.34.56 - 错误---- 2
12345 - 正确---- 3
123,45 - 正确---- 4
123.45 - 正确--- 5
123 ,,, 45 - 错误--- 6
12,345,678 - 正确--- 7
我使用的表达式是
((((\ d + \ d *)[] | [。]?(\ d * \ d +))[,])+ \ d +)
我无法解决测试用例2和6.任何帮助都是可以接受的。
答案 0 :(得分:1)
试试这个正则表达式:
^\d+(?:,\d+)*(?:\.\d+)?$
<强> Click for Demo 强>
<强>解释强>
^
- 断言行的开头\d+
- 匹配1+位数(?:,\d+)*
- 匹配,
后跟1+位的0次出现(?:\.\d+)?
- 匹配.
后跟1位数字。最后?
使这个子模式可选$
- 断言行尾