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

如何编写仅匹配空白字符或整数的字符串的正则表达式?

解决你的正则匹配问题

我明白你要的是能完整校验输入字符串的正则——确保整个输入只有空格和整数,不能混有其他字符对吧?刚好可以帮你搞定这个:

核心正则表达式

如果允许输入为空或者纯空白字符(比如用户只敲了几个空格),用这个:

^[\d\s]*$

如果要求输入至少有一个有效字符(不能是空字符串),就把*换成+:

^[\d\s]+$

为啥这个能行?

我给你拆解一下:

  • ^ 和 $ 是关键锚点,它们把匹配范围锁定在整个字符串上,不会出现“字符串里有合法部分就匹配成功”的情况。
  • [\d\s] 是字符集合:\d 匹配任意0-9的数字,\s 匹配任意空白字符(对你的场景来说主要就是空格)。
  • * 表示“零次或多次”,所以纯空白、纯数字、数字加空格的组合都能匹配;+ 则要求“至少一次”,排除空输入。

对应你的测试用例验证

  • 合法输入:'1'、'2 3'、' 3 56 '这些,全都会被这个正则精准匹配;
  • 非法输入:只要混了字母(比如'4 e'、'shf ie sh f 8'),正则就会直接不通过,完美过滤。

和你现有提取代码结合用

你可以先校验输入合法性,再提取数字,代码示例:

import re

user_input = input("请输入内容:")
# 用fullmatch自动校验整个字符串,也可以用match加^$,效果一样
if re.fullmatch(r'[\d\s]*', user_input):
    # 还是用你原来的提取逻辑
    numbers = [int(i) for i in re.findall(r'\b\d+\b', user_input)]
    print(f"提取到的数字:{numbers}")
else:
    print("输入不合法!只能包含数字和空格哦")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:07:12