正则表达式,只接受两位数整数或浮点数

时间:2017-03-27 18:58:29

标签: java regex

我正在尝试验证接受10.99,1.99,1,20,11等数字的文本字段。

collapse

上面的表达式只传递10.99,11.99,1.99之类的值,但我想要满足我要求的东西。

5 个答案:

答案 0 :(得分:3)

试试这个:

^\d{1,2}(\.\d{1,2})?$
  • ^ - 匹配字符串的开头
  • \d{1,2} - 必须至少包含1位数,最多2位
  • (\.\d{1,2}) - 出现小数点时必须有。至少有1个,最多2个数字
  • ? - 可以有0到1次
  • $ - 匹配字符串的结尾

答案 1 :(得分:2)

假设您想要允许00这样的边缘情况,并且希望在点标记后至少有1个,最多2个小数位:

^(?!00)\d\d?(\.\d\d?)?$

这排除了小数点前的必需数字,即".12"不匹配(您必须输入"0.12",这是最佳做法)。

如果您正在使用String#matches(),则可以删除前导/尾随^$,因为该方法必须与整个相匹配要返回true的字符串。

答案 2 :(得分:1)

首先\ d {0,2}似乎不符合您的要求,因为在这种情况下,它也适用于无数字。它会为您提供正确的输出,但从逻辑上讲,它并不意味着检查字符串中没有数字,因此您可以将其更改为\ d {1,2}

现在,正则表达式?是为了使事物可选,你可以使用它与个人表达如下:

\d{1,2}\.?\d{0,2}

或者你可以在下面的组合表达中使用它

\d{1,2}(\.\d{1,2})?

您还可以参考以下列表进一步查询:

abc…    Letters
123…    Digits
\d  Any Digit
\D  Any Non-digit character
.   Any Character
\.  Period
[abc]   Only a, b, or c
[^abc]  Not a, b, nor c
[a-z]   Characters a to z
[0-9]   Numbers 0 to 9
\w  Any Alphanumeric character
\W  Any Non-alphanumeric character
{m} m Repetitions
{m,n}   m to n Repetitions
*   Zero or more repetitions
+   One or more repetitions
?   Optional character
\s  Any Whitespace
\S  Any Non-whitespace character
^…$ Starts and ends
(…) Capture Group
(a(bc)) Capture Sub-group
(.*)    Capture all
(abc|def)   Matches abc or def

有用的链接:https://regexone.com/

答案 3 :(得分:0)

你可以试试这个:

(\d{1,2}\.\d{1,2})|(\d{1,2})

以下是Demo,您还可以查看simple program

您有两个部分或两个组,用于检查浮点数#.#, #.##, ##.##, ##.#,第二个组用于检查整数#, ##,因此我们可以使用或|,{{1 }}

答案 4 :(得分:0)

我认为这种类型的模式最好通过改动来处理:

/^\s*([-+]?[0-9]*\.[0-9]+([eE][-+]?[0-9]+)?)$ #float
|   # or
^(\d{1,2})$  # 2 digit int/mx

Demo