我实现了一个EditText
,它允许输入由空格分隔的价格。
价格可以是整数也可以是小数。
例如:
3900 156.2 140.38 200 10
所以,我找到了以下正则表达式:
(\d+([.]\d{1,2})?)+
但它仅适用于末尾有空格的情况。 (我知道这绝对是可以预料的)
是否可以使此正则表达式忽略输入字符串末尾的空格?
或者您可以提出其他建议吗?
谢谢。
最佳答案
我建议采用以下模式:
^\d+(?:\.\d+)?(?:\s+\d+(?:\.\d+)?)*$
用简单的英语来说,这表示匹配一个(可能)十进制数字,后跟一个或多个空白字符,以及另一个(可能)十进制数字,发生零次或多次。
查看下面的演示链接。
Demo
但是由于您使用的是 Java,我可以在这里建议一个替代方案。由于您可能必须访问每个数字,因此您可以按空格分割来自 EditText
的字符串,然后检查每个“数字”以确保它确实是一个数字。像这样的事情:
String input = "3900 156.2 140.38 200 10";
String[] nums = input.split("\\s+");
for (String num : nums) {
if (num.matches("\\d+(?:\\.\\d+)?")) {
// then process this as a number
}
}
关于java - 正则表达式匹配以空格分隔的数字值,但整个字符串不以空格结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51383526/