You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Java中如何检查字符串仅包含数字与空格

解决方法

没问题,这个问题很常见,只需要调整你的正则表达式,把空格加入到合法字符集合里就行了。

你原来的正则[0-9]+只会匹配纯数字字符串,完全没考虑空格,所以带空格的字符串自然会被判定不合法。这里有两种常见的修改思路,根据你的需求选就行:

1. 允许任意位置的空格(包括开头/结尾、连续空格)

如果你的场景里,字符串前后有空格或者连续多个空格也算是合法的,直接把空格加到正则的字符集里:

String Cardresult = edtCashCard.getText().toString();
if (Cardresult.matches("[0-9 ]+")){
    Toast.makeText(getApplicationContext(), "Good Job the strings are numbers", Toast.LENGTH_SHORT).show();
} else{
    Toast.makeText(getApplicationContext(), "Error the string contains character", Toast.LENGTH_SHORT).show();
}

这里[0-9 ]+表示匹配一个或多个数字或者空格,完全满足你示例字符串的验证需求。

2. 更严格的格式(只允许数字组用单个空格分隔,无开头/结尾空格)

如果想限制格式,比如不能有开头结尾的空格,也不能有连续多个空格(像你示例的6031 3100 3440 0189 000这种规范格式),可以用更精准的正则:

if (Cardresult.matches("^[0-9]+( [0-9]+)*$")){
    // 验证通过逻辑
}

这个正则的意思是:

  • ^ 匹配字符串开头
  • [0-9]+ 开头必须是一串数字
  • ( [0-9]+)* 后面可以跟着任意次数(包括0次)的「空格+数字串」组合
  • $ 匹配字符串结尾

这样就能确保字符串是纯数字组用单个空格分隔的格式,避免无效的空格情况。

如果你还需要允许其他空白字符(比如制表符),可以把空格换成\s,不过看你的需求,用普通空格就足够啦。

内容的提问来源于stack exchange,提问作者Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 11:43:11