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

JavaScript中匹配字符串重复字符均为偶数次的正则表达式

正则表达式匹配Y/M/D(区分大小写)连续出现次数均为偶数的字符串

需求实现正则

使用以下正则表达式可满足需求,匹配所有Y、y、M、m、D、d的连续出现次数均为偶数的字符串:

^(?:(?:[Yy]{2}|[Mm]{2}|[Dd]{2})|[^YyMmDd])*$

正则解释

  • ^ 和 $:锚定字符串开头与结尾,确保匹配范围覆盖整个字符串
  • (?: ... )*:非捕获组,允许组内内容重复零次或多次
    • (?:[Yy]{2}|[Mm]{2}|[Dd]{2}):匹配成对出现的Y/y、M/m、D/d(连续2次,满足偶数次要求)
    • |[^YyMmDd]:匹配任何不属于Y/y/M/m/D/d的字符(比如示例中的-,不影响校验逻辑)

示例验证

  • 符合要求的字符串 YYMMDD-YYYY-DD:正则匹配成功,返回true
  • 不符合要求的字符串 YYMDD:存在单个M(连续出现1次,属于奇数),正则匹配失败,返回false

原尝试正则的问题

你之前使用的/M{2,}/这类正则逻辑完全错误:

  • {2,}表示匹配2次及以上的连续字符,但无法限制奇数次数的连续字符(比如单个M、3个M都不会被该正则捕获,反而会误判符合要求的字符串)
  • 你的逻辑是“存在2次及以上的连续字符就执行操作”,和需求“所有连续出现次数均为偶数”完全相悖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:05:15