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

求匹配1-2个*且至少含2个数字/点的正则表达式

正则表达式解决方案:匹配含1-2个*且至少2个数字/点的字符串

最终正则表达式

^(?=(?:[^*]*\*){1,2}[^*]*$)(?=(?:[^\d.]*[\d.]){2,}).+$

正则解释

  • 约束*的数量(1-2个):^(?=(?:[^*]*\*){1,2}[^*]*$)
    这部分是正向预查,确保整个字符串里恰好有1到2个*。(?:[^*]*\*){1,2}匹配1或2组「任意非*字符 + *」,末尾的[^*]*保证字符串剩余部分没有第三个*。
  • 约束数字/点的数量(至少2个):(?=(?:[^\d.]*[\d.]){2,})
    这部分也是正向预查,确保字符串中\d(数字)或.(点)的总数≥2。(?:[^\d.]*[\d.]){2,}匹配至少2组「任意非数字/点字符 + 数字/点」,全局统计满足数量要求。
  • 匹配整个字符串:.+$
    确保字符串非空,同时前面的两个预查已经过滤掉不符合条件的情况。

验证示例

  • 匹配成功:1*2、1**2、*2.*
    这些字符串都满足「1-2个*」且「至少2个数字/点」的要求。
  • 匹配失败:ab*、1*、1*2*.*
    • ab*:数字/点数量为0,不满足条件2
    • 1*:数字/点数量为1,不满足条件2
    • 1*2*.*:*的数量为3,不满足条件1

关于你之前尝试的问题

你之前的两段正则是单独针对单个条件的片段,没有结合成全局约束:

  1. 第一段\*(?![\d.]*\*[\d.]*\*[\d.]*)只能匹配单个*且后续没有两个*,但无法全局控制整个字符串的*数量;
  2. 第二段[\d.](?=[\*\d.]{2,})仅匹配某个数字/点后面有至少2个目标字符,没有全局统计数字/点的总数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:08:30