首页 > 解决方案 > 模式匹配器有效编号 java

问题描述

我想要一个号码验证。规则是:

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

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

我给你我迄今为止在 Dan 的工具上建立的表达式。除了分数之后的表达式,我几乎处理了所有事情。每一个帮助都是可以接受的。

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

在此先感谢尼科斯

标签: javaregexpattern-matching

解决方案


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

您可以使用

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

请参阅正则表达式演示正则表达式图

在此处输入图像描述

细节

  • ^- 字符串的开始
  • [+-]?- 一个可选的+-
  • [1-9]- 一个非零数字
  • [0-9]*- 零个或多个数字
  • (?:[.,][0-9]*[1-9])?- 一个可选的小数部分:.,,然后是零个或多个数字,后跟一个非零数字
  • $- 字符串结束。

推荐阅读