使用正则表达式验证号码

时间:2018-02-09 15:08:21

标签: regex

我需要使用正则表达式验证输入类型是否是具有某些规范的数字。该数字可以包含任意数量的逗号(,)但不能包含点(。),但逗号和点不应该并排,例如

  

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.任何帮助都是可以接受的。

1 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

^\d+(?:,\d+)*(?:\.\d+)?$

<强> Click for Demo

<强>解释

  • ^ - 断言行的开头
  • \d+ - 匹配1+位数
  • (?:,\d+)* - 匹配,后跟1+位的0次出现
  • (?:\.\d+)? - 匹配.后跟1位数字。最后?使这个子模式可选
  • $ - 断言行尾