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

Java正则校验name字段非空仅匹配单字符,多字符场景失效如何解决

问题根因

你的原正则"(?s).*?\"name\":\"\\S\".*?"中,\S仅匹配单个非空白字符,当name字段值长度≥2时,\S匹配第一个字符后,后续的字符无法匹配正则中紧跟的",导致整体匹配失败,错误返回空。

修复方法

适配非空且无空白的name值

如果业务要求name值不能包含任何空白字符,将单次匹配的\S改为匹配1次及以上的\S+即可,修改后正则为:
"(?s).*?\"name\":\"\\S+\".*?"

适配允许含空白的非空name值

如果业务允许name值中间带空白(比如"张三 三"这类合法值),仅要求不能是空字符串,可使用更通用的规则,匹配双引号之间至少1个非引号字符:
"(?s).*?\"name\":\"[^\"]+\".*?"

验证效果

修改后测试所有场景均符合预期:

  • 输入[{"id": 12,"name":"t","gender":"male"}]:匹配成功,返回非空
  • 输入[{"id": 12,"name":"","gender":"male"}]:匹配失败,返回空
  • 输入[{"id": 12,"name":"to","gender":"male"}]:匹配成功,返回非空
  • 输入[{"id": 12,"name":"test user","gender":"male"}]:[^"]+版本匹配成功,符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:45:04