我遇到了 regex ,它可以通过步骤 0.5 验证从 -10 到 10 的数字。我想出了验证所有负十进制数和正十进制数的正则表达式:
/^\-?[1-9]\d{0,2}(\.\d*)?$/
但它与预期结果有点远,应该是:
10.5 // Invalid (Should NOT pass)
10 // Pass
9.5 // Pass
9.4 // Invalid (Should NOT pass)
9 // Pass
1 // Pass
0 // Invalid (Should NOT pass)
-1 // Pass
-5.5 // Pass
-5.3 // Invalid (Should NOT pass)
-9 // Pass
-10 // Pass
-10.5 // Invalid (Should NOT pass)
有人可以帮忙解决这个问题吗?
答案 0 :(得分:6)
您可以使用:
^-?(?:[1-9](?:\.5)?|10)$
<强>解释强>
^
锚点断言我们位于字符串的开头-?
使用减号可选(?:[1-9](?:\.5)?|10)
匹配... [1-9](?:\.5)?
从1到9的一位数字和一个可选的.5
|
10 $
锚点断言我们位于字符串的末尾答案 1 :(得分:1)
尝试使用简单的代码段
^-?(?:10|[1-9](?:\.[05])?)$
以下是所有数字的示例:http://regex101.com/r/aE8iH9/3
嗯......更新后,它看起来非常类似于zx81
的答案答案 2 :(得分:1)