当用户在文本框中输入值时,我正在尝试检查匹配项。
文本框的有效值如下所示:
"-"
"-5.5"
"-5.5 6.5 7.5"
无效将是
"-5.5 6.5 "
编辑:^-5.5 和 6.5 之间有不止一个空格,但由于某种原因没有显示。
"3.5 "
^(-?)(\d+\.?\d?)\s?(-?\d+\.?\d?)
请记住,除小数点外,负号是此处允许的唯一特殊字符。
谢谢。
你可以使用这个:
^-(?:\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
)*
)?
$
我想这就是你要找的:
^(-|-?\d+\.?\d?([ ]-?\d+\.?\d?)*)$
这将匹配单个连字符或任意数量的以空格分隔的正数或负数,并带有可选的小数点,并且后面最多有一个数字。这将允许像"5.5 6.5"
or之类的值"-5.5 -6.5"
(您的问题没有指定它是否应该匹配这些值)
你可以在这里测试它。
更新
这将允许更多匹配,但满足在用户键入时支持每个有效序列的新要求。当然,它允许更多,因为不可能确定无效输入和仅不完整的输入(例如-5 -
)之间的差异。
^(-?(\d+\.?\d?( |$)|$))*$
你可以在这里测试它。
你可以试试这个:
^(-(\d+\.\d+)*([ ]\d+\.\d+)*)$