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

Telegram用户名解析正则表达式匹配异常问题求助

Telegram用户名提取正则修复方案

问题原因

原正则中用于验证用户名的(?!.*_$)是全局断言,会检查整个输入字符串是否以下划线结尾,而非仅检查当前匹配的用户名。当输入字符串末尾存在下划线(如@aaaa, @jfewewf_)时,这个全局断言会直接导致整个正则匹配失败,即使前面的@aaaa是完全有效的用户名。

修复后的正则表达式

(?:(?<!\S)@|(?:(?:https?://|)(?:t\.me|telegram\.(?:me|dog))/(?:c/|)|tg://resolve\?domain=)|(?=^[a-z][a-z0-9_]{3,31}(?<!_)\.t\.me$))(?P<username>(?!.*_{2,})[a-z][a-z0-9_]{3,31}(?<!_))(?P<subdomain>\.t\.me)?

修改说明

  1. 移除全局结尾断言(?!.*_$),改用(?<!_)作为用户名的后缀断言,仅校验当前匹配的用户名末尾是否为下划线。
  2. 合并重复的连续下划线校验:原(?!.*__)(?!.*_{2,})简化为(?!.*_{2,}),因为__本身就是连续两个下划线的情况,无需重复校验。
  3. 简化subdomain格式的前置前瞻断言,去掉重复的用户名规则校验,复用后续的用户名验证逻辑。

验证效果

  • 输入@aaaa, @jfewewf:可正确匹配两个有效用户名。
  • 输入@aaaa, @jfewewf_:可正确匹配@aaaa,忽略末尾的无效用户名。
  • 支持匹配username.t.me、https://t.me/username、tg://resolve?domain=username等格式的用户名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:54:59