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

YouTube视频ID是否可能为纯数字?如何编写匹配非纯数字串的正则

解决方案

你需要的正则可以通过负向前瞻实现排除纯数字的逻辑,同时兼容YouTube ID的合法字符和长度要求,表达式如下:

// 单独校验11位ID的正则
const ytIdRegex = /^(?!\d{11}$)[a-zA-Z0-9_-]{11}$/;

规则说明

  • (?!\d{11}$) 是负向前瞻断言,会排除刚好由11位纯数字组成的字符串
  • [a-zA-Z0-9_-]{11} 限定字符串只能由大小写字母、数字、下划线、短横线组成,且长度固定为11位
  • ^ 和 $ 限定匹配整个字符串,避免误匹配长文本中的子片段

如果你需要保留原有支持匹配完整YouTube链接的能力,可以把原有正则的ID匹配部分替换为上述逻辑,修改后的完整代码如下:

const foo = /((http?(?:s)?:?\/\/)?(www\.)?)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?&v=))((?!\d{11}$)(?:\w|-){11})((?:\&|\?)\S*)?|^(?!\d{11}$)(?:\w|-){11}$/;

// 测试用例
console.log(foo.test("abcdefghijk")) // 匹配成功 true
console.log(foo.test("ecK3EnyGD8o")) // 匹配成功 true
console.log(foo.test("12345678901")) // 纯数字匹配失败 false
console.log(foo.test("189741078923512")) // 长度不符匹配失败 false
console.log(foo.test("Stack Overflow")) // 含非法字符空格匹配失败 false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:06:00