我正在尝试检查匹配项,因为用户在文本框中输入值。
文本框的有效值如下:
"-"
"-5.5"
"-5.5 6.5 7.5"
无效将是
"-5.5 6.5 "
编辑:^ -5.5和6.5之间有多个空格,但由于某种原因它没有显示。
"3.5 "
^(-?)(\d+\.?\d?)\s?(-?\d+\.?\d?)
请记住,负号是此处允许的唯一特殊字符,小数点除外。
感谢。
答案 0 :(得分:4)
您可以使用:
^-(?:\d+[.]\d+(?:[ ]\d+[.]\d+)*)?$
说明:
^
- // Match '-'
(?: // An optional non-capturing group
\d+[.]\d+ // Match pattern - 14.45
(?: // A 0 or more times repeating Non-capture group
[ ] // A space
\d+[.]\d+ // Pattern matching - 14.56
)*
)?
$
答案 1 :(得分:2)
我认为这就是你要找的东西:
^(-|-?\d+\.?\d?([ ]-?\d+\.?\d?)*)$
这将匹配单个连字符或任意数量的空格分隔的正数或负数,并带有可选的小数点,后面最多一位数。这将允许"5.5 6.5"
或"-5.5 -6.5"
等值(您的问题没有说明它是否应与之匹配)
您可以对其进行测试here。
<强>更新强>
这将允许更多匹配,但满足用户键入时支持每个有效序列的新要求。当然,它允许更多,因为无法确定无效输入和输入之间的差异(仅仅是-5 -
)。
^(-?(\d+\.?\d?( |$)|$))*$
您可以对其进行测试here。
答案 2 :(得分:0)
你可以试试这个:
^(-(\d+\.\d+)*([ ]\d+\.\d+)*)$