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

如何编写正则表达式从字符串中提取符合@[1-99]格式的子串?

正则匹配方案解答

你原有正则\B@([1-9]|[1-9][0-9])\b的核心问题是\B仅限制@前不能是单词字符,但是允许#、$这类非单词非空白字符出现在@前方,因此会误匹配#$@22这类不符合要求的内容。


最终可用正则

(?<=^|\s)@[1-9]\d?\b

匹配规则说明:

  • (?<=^|\s):零宽正向后行断言,强制要求@的前侧只能是字符串开头或者空白字符,直接过滤掉前缀为字母、特殊符号的非法情况
  • @:匹配固定的@标识
  • [1-9]\d?:匹配199范围的正整数:第一位为19,第二位可选0~9,天然排除@0、@09这类不符合要求的格式
  • \b:单词边界限定,避免匹配到@123中截断的@12这类内容

低版本兼容写法

如果你的运行环境不支持可变长度的后行断言(比如部分旧版本的JavaScript引擎),可以改用捕获组方案,提取第二个分组内容即可:
(^|\s)(@[1-9]\d?)\b
匹配完成后取索引为2的捕获组,就能得到符合要求的子串。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:07