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

JavaScript正则如何排除指定连续字符组实现Discord ID格式校验

const discordIdRegex = /^(?:[^#'@]|'{1,2}|'{4,})+#\d{4}$/

正则逻辑说明

  • 开头^和结尾$锚定整个字符串,确保完整匹配,同时修复了你原有实现中开头第一个字符允许为#/@的疏漏,所有用户名部分的字符都会经过规则校验
  • 第一部分(#之前的用户名部分)的匹配规则拆解:
    • [^#'@]:匹配所有不是#、@、'的合法字符
    • '{1,2}:允许连续1-2个单引号
    • '{4,}:允许连续4个及以上的单引号
    • 以上三个规则用非捕获组(?:)包裹,用+限定至少出现1次,自动排除了恰好3个连续单引号的情况,同时不会拦截4个及以上的连续单引号
  • 第二部分固定匹配#字符
  • 第三部分\d{4}匹配恰好4位数字

匹配测试验证

测试字符串匹配结果符合预期
normal#1234匹配是
single'quote#5678匹配是
double''quote#5678匹配是
triple'''quote#5678不匹配是(恰好3个单引号被拦截)
four''''quote#5678匹配是(4个单引号允许)
six''''''quote#5678匹配是(6个单引号允许)
has@at#9012不匹配是(包含@被拦截)
has#hash#9012不匹配是(第一部分包含#被拦截)

同类需求实现思路

以「允许@和#单独出现,但禁止@#连续组合」为例,核心逻辑是对禁止的连续组合添加否定前瞻判断:

// 禁止出现@#连续组合的正则
const demoRegex = /^(?:[^@]|@(?!#))+$/

逻辑为:要么匹配非@的字符,要么匹配后面没有紧跟#的@,即可实现允许单独@、单独#,拦截@#连续组合的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:36:03