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

求匹配末尾为4位数字的Discord ID的Perl正则表达式(修正匹配问题)

解决Discord ID正则误匹配的问题

嘿,这个坑我之前踩过!你的正则^.*#[0-9]{4}$之所以会误判test#1234 #1234这类输入,核心问题在于.*是贪婪匹配任意字符——它会把第一个#1234后面的空格和第二个#都包含进去,直到最后一个#后面的4位数字,刚好满足结尾的规则。

调整后的正则方案

直接把匹配用户名部分的.*换成[^#]*,也就是只匹配不含#的任意字符,最终正则为:

^[^#]*#[0-9]{4}$

规则拆解

  • ^:锚定字符串的起始位置
  • [^#]*:匹配0个或多个非#字符(完美对应Discord用户名的规则,因为用户名里不能包含#)
  • #:匹配Discord ID里的分隔符#
  • [0-9]{4}:严格匹配4位数字的判别码
  • $:锚定字符串的结束位置,确保4位数字之后没有任何多余字符

测试验证

  • ✅ 正确匹配:test#1234、MyUser_123#4567
  • ❌ 拒绝误匹配:test#1234 #1234、user#123、user#12345、#1234(如果需要允许纯判别码的话,当前正则已经支持;若要强制用户名非空,可把[^#]*改成[^#]+)

进阶优化(贴合Discord实际规则)

如果要完全遵循Discord的ID规范(用户名长度1-32字符,不含#;判别码固定4位数字),可以用更严格的版本:

^[^#]{1,32}#[0-9]{4}$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:14:34