【问题标题】:Regex for urls without http, https, ftp没有 http、https、ftp 的 url 的正则表达式
【发布时间】:2010-11-25 09:34:32
【问题描述】:

我正在寻找一个接受以下网址的正则表达式:

http://www.example.com
www.example.com

这是我目前所拥有的,但它的正则表达式不匹配没有 http://https://ftp:// 的 URL:

regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

如何使协议成为可选协议?

【问题讨论】:

标签: javascript regex


【解决方案1】:

(ftp|http|https):\/\/ 部分设为可选:

((ftp|http|https):\/\/)?

【讨论】:

  • 谢谢,但现在我可以匹配例如“example”或“example@example.com”。我不想要它。那么我该如何解决呢?我的正则表达式: regexp = /((ftp|http|https):\/\/)?(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)? (\/|\/([\w#!:.?+=&%@!\-\/]))?/;我不想匹配“example@example.com”或“example”
  • example@example.com 实际上是一个有效的 URL:第一个 example 是用户名,可以通过这种方式提交。尝试在 http://stackoverflow.com 之间添加一个 example@ 来加载这个页面。
  • 好的。我不知道。感谢您的帮助。
  • 我不想在我的网址中接受@。你知道如何更改我的正则表达式吗?
【解决方案2】:

试试这个,这将验证带有(http,ftp,https)或不带(http,ftp,https)的url..

/^(?:(ftp|http|https):\/\/)?(?:[\w-]+\.)+[a-z]{3,6}$/;

【讨论】:

  • 此正则表达式不接受来自德国的域的 url。例如(www.germany.de)。您必须将正则表达式更改为/^(?:(ftp|http|https):\/\/)?(?:[\w-]+\.)+[a-z]{2,6}$/; 2 很重要。
  • 这不是一个很好的方法。实际上,您所能做的就是检查.。有很多名称超过 6 个字符的新 TLD...
  • TLD 的长度可以在 2 到(目前最长的 TLD 是)24 个字符之间 (stackoverflow.com/questions/9238640/…)。 /^(?:(ftp|http|https):\/\/)?(?:[\w-]+\.)+[a-z]{2,24}$/
【解决方案3】:

试试这个,这将验证 url 有或没有(http,ftp,https)的大小写,还允许你输入数字

/^(?:(ftp|http|https)?:\/\/)?(?:[\w-]+\.)+([a-z]|[A-Z]|[0-9]){2,6}$/gi;

【讨论】:

    【解决方案4】:

    请看https://codegolf.stackexchange.com/a/480/6593

    引用以上链接:

    value = 'www.google.com';
    if(/(^|\s)((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(value)) {
                return true;
            } else {
                return false;
            }
    

    【讨论】:

      【解决方案5】:

      regex 接受不带 http 或 https 的 url

      [-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@%_\+.~#?&//=]*)
      

      在 HTML5 中

      <input pattern="[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@%_\+.~#?&//=]*)" type="text>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-18
        • 1970-01-01
        • 2014-05-07
        • 2012-02-06
        • 1970-01-01
        • 2019-02-19
        • 2023-01-23
        • 2012-11-22
        相关资源
        最近更新 更多