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

如何检测字符串中两个字符(含数字)之间是否存在空格?

检测字符串中字符/数字之间的空格

我明白你的需求了——你要找的是两个非空白字符(包括数字)中间夹着空格的情况,而忽略字符串开头或结尾的冗余空格对吧?你之前尝试的正则表达式太局限了,只能匹配特定格式的数字串,没法满足通用场景,我来给你几个更合适的解决方案:

通用场景:检测任意字符之间的空格

如果你的字符串里可能包含字母、数字等各种非空白字符,想要检测是否存在“字符+空格+字符”的结构,可以用这个正则表达式:\S \S,其中:

  • \S 代表任意非空白字符(和\s相反,\s匹配空格、制表符等空白内容)
  • \S \S 精准匹配“非空白字符 + 空格 + 非空白字符”的片段

对应的Java代码示例:

String test = "2 2";
// 编译正则:匹配任意非空白字符之间的空格
Pattern pattern = Pattern.compile("\\S \\S");
Matcher matcher = pattern.matcher(test);

if (matcher.find()) {
    System.out.println("存在字符之间的空格!");
}

这个方案能覆盖各种情况:

  • ✅ 匹配 "2 2"、"a b"、"x 123" 这类字符间有空格的字符串
  • ❌ 不匹配 "22 "(仅结尾空格)、" 22"(仅开头空格)、" "(全是空格)

仅针对数字场景:检测数字之间的空格

如果你的需求只限定在数字之间的空格,可以把正则里的\S换成\d(匹配数字),也就是\d \d:

String test = "2 2";
// 编译正则:匹配数字之间的空格
Pattern numPattern = Pattern.compile("\\d \\d");
Matcher numMatcher = numPattern.matcher(test);

if (numMatcher.find()) {
    System.out.println("存在数字之间的空格!");
}

为什么你原来的正则不好用?

你之前写的 ^(\\d [\\d\\d] )*\\d$ 是要求整个字符串符合“数字+空格+1-2位数字+空格”重复多次,最后以数字结尾的格式,比如只能匹配 "2 2"、"3 45 6" 这类特定结构的字符串,一旦字符串有开头空格、或者数字位数不对,就会匹配失败,完全没法满足“检测是否存在字符间空格”的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 21:12:46