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

Java如何验证「操作数 运算符 操作数」格式的输入(如1.4 * 5)

问题原因

你的正则表达式存在两处语法误用,导致匹配不符合预期:

  • 错误使用字符集语法[]包裹数值匹配逻辑:[]仅用于匹配单个字符,你把多字符的数值匹配规则放在[]内,实际只能匹配单个数字/小数点字符,因此多位数、小数全部校验失败
  • 运算符部分的[]内多写了多余的逗号,会误将逗号识别为合法运算符

修复方案

将正则替换为如下内容即可:

private static final String regex = "(\\d+\\.?\\d*|\\.\\d+) [+\\-*/] (\\d+\\.?\\d*|\\.\\d+)";

正则匹配逻辑说明:

  • 第一组(\\d+\\.?\\d*|\\.\\d+)匹配左操作数:支持整数(如123)、带整数部分的小数(如12.34)、省略整数部分的小数(如.56)
  • 中间[+\\-*/]匹配支持的四种运算符
  • 第二组同第一组,匹配右操作数

可选优化

如果需要兼容操作数和运算符之间的多个空格/制表符,可将中间的空格替换为\\s+,正则修改为:

private static final String regex = "(\\d+\\.?\\d*|\\.\\d+)\\s+[+\\-*/]\\s+(\\d+\\.?\\d*|\\.\\d+)";

校验效果

修复后你给出的所有合法输入都可以正常通过校验:

  • 1 + 3 校验通过
  • 1.3 - 4 校验通过
  • 123 * 3434 校验通过
  • 12.34 * 485 校验通过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:06:02