java - 正则表达式匹配以空格分隔的数字值,但整个字符串不以空格结尾

标签 java regex android-edittext

我实现了一个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/

相关文章:

android - 如何从 EditText 获取文本?

java - Blackberry java,使用同步从非 UI 线程打开对话框

java - 如何在 JSF 中使用查询字符串获取当前绝对 URL?

java - 使用 BufferedWriter 将存储在数组中的 String 和 Double 值写入文件

regex - 执行错误 : from org. apache.hadoop.hive.ql.exec.DDLTask

java - 使用 animateLayoutChanges 调整 EditText 大小时光标位于错误位置

java - 一旦到达流结尾,是否应该显式关闭连接?

javascript - 正则表达式删除/之前和之后的3个字符

arrays - 在 Bash 中迭代字符串数组并删除其部分值?

java - 如何在编辑文本字段上设置单词java(android)