Php youtube频道URL的正则表达式
如何使用正则表达式验证youtube频道URL 我找到了这个模式,但它不能正常工作Php youtube频道URL的正则表达式,php,regex,Php,Regex,如何使用正则表达式验证youtube频道URL 我找到了这个模式,但它不能正常工作 /((http|https):\/\/|)(www.|)youtube\.com\/(channel\/|user\/|)[a-zA-Z0-9]{1,}/ 有人能帮我吗?您的问题是user\/ 以下是更正后的正则表达式: ((http|https):\/\/|)(www\.|)youtube\.com\/(channel\/|user\/)[a-zA-Z0-9_-]{1,} 这是一个问题,因为它使(通道|用户
/((http|https):\/\/|)(www.|)youtube\.com\/(channel\/|user\/|)[a-zA-Z0-9]{1,}/
有人能帮我吗?您的问题是
user\/
以下是更正后的正则表达式:
((http|https):\/\/|)(www\.|)youtube\.com\/(channel\/|user\/)[a-zA-Z0-9_-]{1,}
这是一个问题,因为它使(通道|用户)成为可选的
编写此正则表达式的更好方法是
(https?:\/\/)?(www\.)?youtube\.com\/(channel|user)\/[\w-]+
要从youtube URL获取频道名称或频道id,请使用:
(?:https|http)\:\/\/(?:[\w]+\.)?youtube\.com\/(?:c\/|channel\/|user\/)?([a-zA-Z0-9\-]{1,})
工作对象:
频道ID以“UC”开头。我不知道还有什么其他方法可以识别频道ID和频道名称。我发现对我来说最好的解决方案是
/(https?:\/\/)?(www\.)?youtu((\.be)|(be\..{2,5}))\/((user)|(channel))\/?([a-zA-Z0-9\-_]{1,})/
这适用于
http://www.youtube.com/channel/uc_fglsfl
http://youtube.co.uk/channel/asdasgfgjd
https://youtube.com/channel/ghjgk+öää,
https://youtube.net/channel/43568&gsldkfj
https://youtube.de/channel/dtgzu&&dadg
http://youtube.com/channel/vgujsgh&as=gr
http://youtube.com/channel/xdfhxfgu
let str = 'http://www.youtube.com/channel/uc_fglsfl'
let pattern = '/(https?:\/\/)?(www\.)?youtu((\.be)|(be\..{2,5}))\/((user)|(channel))\/?([a-zA-Z0-9\-_]{1,})/'
let matchs = str.match(pattern)
//result id
matchs[9]
经过深入研究,我提出了以下正则表达式:
^https?:\/\/(www\.)?youtube\.com\/(channel\/UC[\w-]{21}[AQgw]|(c\/|user\/)?[\w-]+)$
它允许:
或https
http
是否www.
URL(自2015年起)channel/
URL(旧版)user/
- 自定义(
)URL(自2016年起)c/
- 短URL(
或user/
已删除)c/
- 从UC开始
- 21个字符的
(与[0-9a-zA-Z_u-]
相同)[\w-]
- 以
[AQgw]
https://www.youtube.com/channel/UCARj2eHnsYMuCZDmYZ5q4_g
https://www.youtube.com/channel/UCUZHFZ9jIKrLroW8LcyJEQQ
https://www.youtube.com/c/YouTubeCreators
https://www.youtube.com/YouTubeCreators
https://www.youtube.com/user/partnersupport
https://www.youtube.com/partnersupport
http://www.youtube.com/partnersupport
https://youtube.com/partnersupport
http://youtube.com/partnersupport
资料来源:
?谢谢你,我从原始代码中删除了管道,它工作了/((http | https):\/\/|)(www.124;)youtube\.com\/(channel\/| user\/)[a-zA-Z0-9]{1,}/将uu添加到通道的正则表达式示例:还要注意,通道id也以UC开头通道id也可以包含破折号。示例(假链接,但格式与真实链接类似):更新的正则表达式:((http | https):\/\/)?(www\.|)youtube\.com\/channel\/([a-zA-Z0-9\-]{1,})
@ThomasRoss nice,但您的更新缺少下划线,Julien提到了这一点。我做了一点编辑以抑制不太重要的捕获,并强制频道id的第一个字符为大写:(?:(?:http | https):\/\/\/\)(?:www\.|)youtube\.com\/(频道|用户)\/([A-Z][A-zA-Z0-9\-\\\/{1,})