0

主要问题有点短,所以我会合作。我正在为 twitter 构建一个应用程序,您可以使用它执行基本操作(获取帖子、发布帖子、回复等)

现在我想如果我在我的应用程序中检查最大 140 字符限制,那将是一个好主意。到目前为止一切顺利,然后有人问我是否也可以做 url-shortener 的事情。

所以目前我有一个正则表达式,可以选择大多数(实际上太多)url,采用它们的长度,并添加或推断与 140 最大值的差异。它仍然是一个错误但我可以管理它。

现在我的问题....

似乎 twitter 在他们认为的 url 方面非常挑剔:我得到了最基本的(以 http(s):// 等开头),但 twitter 也很容易替换一些 tld,(www.)google.com [whatever].net/.biz/.info 只是其中的一部分)但不是 .nl .de .tk

现在我想知道是否有人发现他们做了哪些,哪些没有“缩短”。

现在因为我很确定我的正则表达式不是最好的,所以我也会把它放在这里:

((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)|([\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
4

3 回答 3

1

http://support.twitter.com/articles/78124-how-to-shorten-links-urls#表示所有发布到 Twitter 的 URL 都将被重写为正好 19 个字符长。

于 2012-05-09T08:15:00.590 回答
0

我正在使用这个:var url_expression = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/gi;没有人抱怨:)

于 2012-05-09T04:53:18.127 回答
0

我想通了,我在 tld wikipage 上发现了一条非常重要的行。它指出所有国家的顶级域名都是两个字符长。反之亦然;所有 2 个字符的顶级域名都是国家。考虑到这一点,我开始用 twitter 测试其中的一些,我很确定我现在知道 url 的 twitter 缩短了哪些,哪些没有。

  • 所有网址都以 http:// 或 https:// 开头
  • 所有网址都像 [something].[non country tld] # .com .biz .mobi 等(.arpa 和 .aero 除外)
  • 所有 url 都像 [something].[something].[valid tld] # 包括国家

  • http://[user]:[pass]@[something].[tld] 之类的链接不会被缩短

现在要为它构建一个正则表达式,我会在我认为我拥有它时将它发布在这里:D

这就是我到目前为止得到的:

/(^(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?:(?:[-\w]+\.)+(?:com|asia|cat|coop|edu|int|tel|pro|org|net|gov|mil|biz|info|mobi|name|jobs|museum|travel|([a-z]{2})))(?::[\d]{1,5})?(?:(?:(?:\/(?:[-\w~!$+|.,=\(\)]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?)/gim;

它仍然存在一个主要缺陷,它还接受 twitter 不接受的 [domain].[tld]。

我希望这对将来的某人有所帮助。我很确定在网上没有很多容易找到的信息(或者至少我找不到)。

于 2012-05-09T08:46:48.717 回答