模式匹配器有效数字java

问题描述

我想进行数字验证。规则是:

  1. 数字可以以+或-开头,也可以不以数字开头(以正数表示)
  2. 不能以0开头
  3. 也可以有一个分数。或,
  4. 不能以0结尾

因此可接受的数字为:+ 123,-123、123、1023、123.03、123.03。 不可接受的数字是:001、1.000,任意字母

我给您到目前为止我在Dan's Tools上构建的表达式。除小数点后的表达式外,我几乎处理了所有事情。每个帮助都是可以接受的。

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

预先感谢 尼科斯(Nikos)

解决方法

除了模式中缺少的小数部分外,用 IEnumerable<string> result = request .ApplicationAccess .CategoryAccessType .SelectMany(c => c.ApplicationTypes.SelectMany(t => t.RoleAmpLabelAdded)) .Select(r => r.AuthRoleCode); 量词对[1-9][0-9]进行量化时,正则表达式将不匹配一位数字,至少需要一个字符。

您可以使用

+

请参见regex demoregex graph

enter image description here

详细信息

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