我正在尝试验证接受10.99,1.99,1,20,11等数字的文本字段。
collapse
上面的表达式只传递10.99,11.99,1.99之类的值,但我想要满足我要求的东西。
答案 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