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

如何使用RegEx匹配同时包含数字与字母的括号内内容

匹配括号内同时包含数字和字母内容的正则方案

匹配规则说明

匹配判定唯一标准:

  • 内容被英文圆括号包裹
  • 括号内必须同时存在字母字符、数字字符(数字可附带逗号、小数点、数学运算符、美元符号等任意附属符号,只要存在数字位即可)
  • 括号内仅含数字、仅含字母的内容不匹配

测试样例

待匹配文本:

(5) (dogs)  (5 dogs)  (dogs 5)

预期匹配结果:

(5 dogs)  -or-  (dogs 5)

原有写法问题

之前的正则写法有三个核心错误:

  • 错误使用^锚点:^代表字符串/行的起始位置,放在括号内的字符组前完全无法匹配括号中间位置的字符
  • 没有做跨括号匹配限制:没有限定匹配范围在当前一对括号内部,容易出现跨多个括号匹配的错误
  • 没有正确实现“同时存在两类字符”的判定逻辑

可用正则

直接匹配符合要求的完整括号内容,使用下面的正则即可:

\((?=[^)]*[A-Za-z])(?=[^)]*[0-9])[^)]+\)

规则拆解

  • \(:匹配左括号起始
  • (?=[^)]*[A-Za-z]):正向预查,确认当前左括号到最近一个右括号的范围内,至少存在一个英文字母
  • (?=[^)]*[0-9]):正向预查,确认当前左括号到最近一个右括号的范围内,至少存在一个数字字符(满足数字可带各类附属符号的要求,只要有数字位就符合判定)
  • [^)]+:匹配括号内所有非右括号的内容,避免跨多组括号匹配
  • \):匹配右括号结束

如果需要单独提取括号内部的内容,给内容部分加捕获组即可:

\((?=[^)]*[A-Za-z])(?=[^)]*[0-9])([^)]+)\)

提取第1个捕获组的内容,就能拿到括号里的文本。

匹配效果验证

  • 可正常匹配:(5 dogs)、(dogs 5)、($3.99 * 2 oranges)这类同时包含数字和字母的括号内容
  • 不会匹配:(123)、(dogs)、($100+200-50*0.5)这类仅含数字/符号无字母的内容,(apple_banana)这类仅含字母无数字的内容

内容的提问来源于stack exchange,提问作者Alan M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:42:28