正则表达式将数字与逗号和点匹配

Pro*_*obs 0 python regex

我想使用该re模块来匹配整数和浮点数。因此,如果有人键入以下输入类型之一,它应该验证它是否是一个数字:

- 1000
- 1.000
- 1,000
- ($1,000.98)
- -1.000
- 1.0
- $1,0000
Run Code Online (Sandbox Code Playgroud)

现在我正在使用以下内容:

"^[-+]?[0-9]+$"
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏

anu*_*ava 5

对于给定的输入,此正则表达式应该有效:

^(?:[+-]|\()?\$?\d+(?:,\d+)*(?:\.\d+)?\)?$
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

拆散:

  • ^- 开始
  • (?:- 启动非捕获组
    • [+-]- 匹配+-
    • |- 或者
    • \(- 匹配( )?- 结束非捕获组(可选)
  • \$?- 匹配$(可选)
  • \d+- 匹配 1 个或多个数字
  • (?:- 启动非捕获组
    • ,- 匹配逗号
    • \d+- 匹配 1 个或多个数字
  • )*- 结束非捕获组(零次或多次出现)
  • (?:- 启动非捕获组
    • \.- 匹配一个点
    • \d+- 匹配 1 个或多个数字
  • )?- 结束非捕获组(可选)
  • \)?)-最后匹配一个文字(可选)
  • $- 结尾