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

如何用正则表达式验证字符串包含至少3种不同数字?

正则表达式匹配包含至少3种不同数位的数字串

需求说明

检查字符串中的数字部分是否包含至少3种不同的数位:

  • 符合要求:AB1000002(数字部分包含1、0、2三种不同数位)
  • 不符合要求:AB1000000(数字部分仅包含1、0两种数位)

解决方案正则

^.*(?:(\d).*?(?!\1)(\d).*?(?!\1|\2)(\d)).*$

正则解释

  • ^.* 匹配字符串开头到目标数字前的任意字符
  • (?:(\d).*?(?!\1)(\d).*?(?!\1|\2)(\d)) 核心匹配逻辑(非捕获组):
    1. (\d) 捕获第一个数字到分组1
    2. .*?(?!\1) 匹配任意字符,直到遇到与分组1不同的数字
    3. (\d) 捕获第二个不同的数字到分组2
    4. .*?(?!\1|\2) 匹配任意字符,直到遇到既不属于分组1也不属于分组2的数字
    5. (\d) 捕获第三个不同的数字到分组3
  • .*$ 匹配第三个数字之后的任意字符到字符串结尾

关于你之前的正则

你写的 \d(\d)((?!\1)\d)+ 存在局限性:它只能检查从第二个数字开始是否有不同,但无法确保存在第三种不同数位,比如1122会被这个正则匹配,但实际只有两种数位,不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 14:23:22