Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在文本字符串中查找与Twitter使用完全相同的URL_Javascript_Regex_Twitter - Fatal编程技术网

Javascript 在文本字符串中查找与Twitter使用完全相同的URL

Javascript 在文本字符串中查找与Twitter使用完全相同的URL,javascript,regex,twitter,Javascript,Regex,Twitter,有许多类似的问题,但是它们不能回答url没有www.,http://,等等的问题。我想做的是检查字符串是否包含具有任何类型url的url。当你提交一条推文时,Twitter就会这样做 可接受的URL包括但不限于: 谷歌网站 images.google.com 我从&尝试了两个正则表达式: (2)该公司目前的主要代码是:上述的主要代码是:上述的英国政府监管局(以下的代码)在上述的英国政府监管局(以下的代码)在上述的英国政府监管局(以下的代码)在上述的主要主要主要的主要是:::::::::

有许多类似的问题,但是它们不能回答url没有
www.
http://
,等等的问题。我想做的是检查字符串是否包含具有任何类型url的url。当你提交一条推文时,Twitter就会这样做

可接受的URL包括但不限于:

  • 谷歌网站
  • images.google.com
我从&尝试了两个正则表达式:

(2)该公司目前的主要代码是:上述的主要代码是:上述的英国政府监管局(以下的代码)在上述的英国政府监管局(以下的代码)在上述的英国政府监管局(以下的代码)在上述的主要主要主要的主要是:::::::::::::::::::::::::)上述上述的英国政府监管监管局(以下)在上述上述上述上述上述上述的英国英国政府监管局(以下)在上述上述上述上述的)在上述上述上述的主要主要主要主要主要,,以及(以下以下)在上述上述上述的,以及(以下以下)在上述上述上述的)在(以下以下)的)在上述上述上述上述的((以下)当中,以及(((:::::::::::::::::::::)除除除除除除除除除除除除除除除上述上述上述上述上述上述上述(a-10(a-10(a-9.9.9.9.d\u2018\u2019])/i; 变量正则表达式=/(?:[^=!:“\/”)((?:https?:\/\/\//www\)[-\w]+(?::[-\w]+)*(?:\d+)(?:\/(?:(?:[-\w\+%])+)*((?:+[\w\%-])+)+)*(?:+?:+[\w\%&=-)+)(?:+)(?:+[\w\\\%&-])+)(?:-)(?::[\w\\\-]-)+)(?:-)(?:-)-)(?::)(?:[\w-)-)-)-)(?:)-)(?:)-)(?:-)-)((?:)-)(?::::| RFC 3986。 验证字符串是否包含RFC 3986中指定的URL。支持绝对URL和相对URL

RFC 3986。
验证字符串是否包含RFC 3986中指定的URL。绝对URL和相对URL都受支持。

我认为没有可靠的方法(随着时间的推移)来做到这一点。现在,很难跟上。无论如何,我尝试了一下

/
  (
    \b
      (?:(https?|ftp):\/\/)?
      (
        (?:www\d{0,3}\.)?
        (
          [a-z0-9.-]+\.
          (?:[a-z]{2,4}|museum|travel)
          (?:\/[^\/\s]+)*
        )
      )
    \b
  )
/ix
捕获组
  • 整个URL,例如:
    http://www.google.com/anyquerystringSAY/Rfy/srA/yh
  • 协议,例如:
    http
  • URL包括
    www.
    ,例如:
    www.google.com/swrua8rua8rUWRWAURHAJSrjuhFAhjT/Rtgfsbdh
  • URL不包括
    www.
    ,例如:
    google.com/sarwar8wa8r/R/A(R8
    images.google.com/w9r89w9ar8a9sjfriJRIUS(RY/(YUr
  • 或者,您可以将
    (?:[a-z]{2,4}| museum | travel)
    位替换为所有,但该列表永远不会停止增长,因此我怀疑它是否值得(您可以看到我添加了两个例外museum和travel)

    另外请注意,我添加了ftp,如果您不需要,可以随意删除它

    希望这有帮助


    我不认为有一个可靠的方法(随着时间的推移)来做到这一点。现在,这将是很难跟上。无论如何,我给了它一个机会

    /
      (
        \b
          (?:(https?|ftp):\/\/)?
          (
            (?:www\d{0,3}\.)?
            (
              [a-z0-9.-]+\.
              (?:[a-z]{2,4}|museum|travel)
              (?:\/[^\/\s]+)*
            )
          )
        \b
      )
    /ix
    
    捕获组
  • 整个URL,例如:
    http://www.google.com/anyquerystringSAY/Rfy/srA/yh
  • 协议,例如:
    http
  • URL包括
    www.
    ,例如:
    www.google.com/swrua8rua8rUWRWAURHAJSrjuhFAhjT/Rtgfsbdh
  • URL不包括
    www.
    ,例如:
    google.com/sarwar8wa8r/R/A(R8
    images.google.com/w9r89w9ar8a9sjfriJRIUS(RY/(YUr
  • 或者,您可以将
    (?:[a-z]{2,4}| museum | travel)
    位替换为所有,但该列表永远不会停止增长,因此我怀疑它是否值得(您可以看到我添加了两个例外museum和travel)

    另外请注意,我添加了ftp,如果您不需要,可以随意删除它

    希望这有帮助


    答案是——你不能

    例如,Twitter将歌手的名字Will.I.Am视为URL(.Am是有效的tld)

    如果不知道每个tld上的所有域注册规则,就无法在不进行测试的情况下知道URL是否有效

    这是我建议你做的

  • 对你的脚本要慷慨。接受几乎任何带有“.”的字符串
  • 执行请求以查看URL是否存在
  • 进行一次测试以查看域是否已注册(即使确切的URL不匹配)

  • 当然,这并没有考虑到有人可能已经发布了一个到他们内部网的链接——这对他们的一些追随者来说是可行的。

    答案是——你不能

    例如,Twitter将歌手的名字Will.I.Am视为URL(.Am是有效的tld)

    如果不知道每个tld上的所有域注册规则,就无法在不进行测试的情况下知道URL是否有效

    这是我建议你做的

  • 对你的脚本要慷慨。接受几乎任何带有“.”的字符串
  • 执行请求以查看URL是否存在
  • 进行一次测试以查看域是否已注册(即使确切的URL不匹配)

  • 当然,这并没有考虑到有人可能已经发布了一个到他们内部网的链接,这对他们的一些追随者来说是可行的。

    我的名为FuncJS的简单JavaScript库有一个名为“findLinks()”的函数,它应该能够完成您想要的任务

    假设您有一个包含链接的字符串,只需包含在函数参数中,如下所示:

    findLinks("Visit my website at http://website.com and visit my profile on Twitter at http://twitter.com/yourProfile!");
    
    然后使用各种方法输出它,例如document.write,输出字符串时应突出显示链接

    为了更好地理解此功能,请阅读位于的文档


    希望这能帮助您和其他任何想要这样做的人:)

    我的名为FuncJS的简单JavaScript库有一个名为“findLinks()”的函数,它应该能够完成您想要的任务

    假设您有一个包含链接的字符串,只需包含在函数参数中,如下所示:

    findLinks("Visit my website at http://website.com and visit my profile on Twitter at http://twitter.com/yourProfile!");
    
    然后使用各种方法输出它,例如document.write,输出字符串时应突出显示链接

    为了更好地理解此功能,请阅读位于的文档


    希望这能帮助您和其他想要这样做的人:)

    您在尝试的两个示例中遇到了什么问题?@ChrisFrancis我用一个示例更新了这个问题:@stwhite我在这里回答了一个类似的问题:。总之,如果您想删除前缀约束,如“www”那么,你很可能不得不添加后缀约束,如<代码>(COM.Org.O.C.U.K.C.JP)$< /代码>;否则所有的胡言乱语都可以通过“链接”。