模式匹配器有效数量 java

Pattern Matcher valid number java

我想进行号码验证。规则是:

  1. 一个数字可以以+或-开头,也可以不开头(被视为正数)
  2. 不能以 0 开头
  3. 也可以有小数。或者,
  4. 不能以 0 结尾

所以可接受的数字是:+123、-123、123、1023、123.03、123,03。 不可接受的数字是:001、1.000、任何字母

我给你我到目前为止在 Dan 的工具上构建的表达式。除了分数后面的表达式,我几乎掌握了所有内容。每一个帮助都是可以接受的。

表达式:(^(\+|-?)([1-9]+))([0-9]+)(\.|,?)

提前致谢 尼克斯

除了您的模式中缺少的小数部分,您的正则表达式不会匹配单个数字,因为您使用 + 量词量化 [1-9][0-9] 至少需要一个字符

您可以使用

^[+-]?[1-9][0-9]*(?:[.,][0-9]*[1-9])?$

参见 regex demo and the regex graph:

详情

  • ^ - 字符串开头
  • [+-]? - 可选的 +-
  • [1-9] - 单个 non-zero 数字
  • [0-9]* - 零个或多个数字
  • (?:[.,][0-9]*[1-9])? - 可选的小数部分:., 然后零个或多个数字后跟单个 non-zero 数字
  • $ - 字符串结尾。