2017-04-14 128 views
0

我想用re模块匹配整数和浮点数。因此,如果有人类型下列输入类型中的一种,应该验证它是一个数字:正则表达式用逗号和点数匹配数字

- 1000 
- 1.000 
- 1,000 
- ($1,000.98) 
- -1.000 
- 1.0 
- $1,0000 

现在我使用的是以下几点:

"^[-+]?[0-9]+$" 

任何帮助表示赞赏

回答

2

对于给定的输入这个表达式应该工作:

^(?:[+-]|\()?\$?\d+(?:,\d+)*(?:\.\d+)?\)?$ 

RegEx Demo

破碎:

  • ^ - 启动
  • (?: - 开始非捕获组
    • [+-] - 匹配+-
    • | - OR
    • \( - 匹配( )? - 完非捕获组(可选)
  • \$? - 匹配$(可选)
  • \d+ - 第1个或多个数字
  • (?: - 开始非捕获组
    • , - 匹配一个逗号
    • \d+ - 第1个或多个数字
  • )* - 完非捕获组(零个或多个发生)
  • (?: - 启动非捕获组
    • \. - 匹配一个DOT
    • \d+ - 匹配1位或更多位数
  • )? - 结束非捕获组(可选)
  • \)? - 到底
  • $匹配文字)(可选) - 结束
+1

真的很酷,谢谢! – Probs

-1

您好我搞砸周围regexr.com和我得到了以下匹配所有7个值

[0-9]?[-+.,]?[0-9]+[.]?[0-9]+ 

希望这可以帮助,这里是proof

+0

嗨C.Molloy,这不符合预期,因为如果它包含一个字符串,那么它仍然匹配 - 这不是我想要的。 anubhava提供的解决方案更加完整。但感谢您的帮助! – Probs

相关问题