【问题标题】:Regex for youtube url with JavaScript带有 JavaScript 的 youtube url 正则表达式
【发布时间】:2021-01-07 21:02:16
【问题描述】:

我有一个表单,它有一个输入字段,它只要求一个有效的 youtube url 并且没有逗号分隔的 youtube url。我使用以下正则表达式来验证 youtube url 的用户输入:

^((?:https?:)?\/\/)?((?:www|m)\.)?((?:youtube\.com|youtu.be))(\/(?:[\w\-]+\?v=|embed\/|v\/)?)([\w\-]+)(\S+)?$

但如果用户输入逗号分隔的有效 youtube 链接,这些正则表达式将失败。

我想要一个简单的正则表达式,在输入字段中只允许一个有效的 youtube 链接。 由于我是正则表达式的新手,任何人都可以帮助我吗?

例如:

https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured, https://www.youtube.com/watch?v=DFYRQ_zQ-gk&feature=featured

这应该会失败,因为只能输入一个 url,如果用逗号分隔 url,那么正则表达式将失败

【问题讨论】:

    标签: javascript regex youtube


    【解决方案1】:

    下面的代码,sn-p 验证输入字段,只输入一个 URL。

    function isUrlValid(url) {
        return /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url);
    }
    

    测试用例:

    valid:   https://google.com
    valid:   http://www.google.com:80/
    valid:   https://www.google.com:443/
    valid:   http://127.0.0.1/
    invalid: www.site.com
    invalid: x:
    invalid: http://
    invalid: javascript:alert('xss')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-01
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      • 2011-10-31
      • 1970-01-01
      相关资源
      最近更新 更多