首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何模仿twitters的url-shortener?

我如何模仿twitters的url-shortener?
EN

Stack Overflow用户
提问于 2012-05-08 21:59:48
回答 3查看 343关注 0票数 0

主要问题有点简短,所以我将进行协作。我正在为twitter构建一个应用程序,你可以用它来做基本的操作(获取帖子,做帖子,回复等)。

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

因此,目前我有一个正则表达式,它可以选择最多(实际上太多)的url,取它们的长度,然后添加或推导出140最大值的差值。这仍然是一个错误,但我可以做到。

现在我的问题..。

看起来推特在他们认为是url的地方相当挑剔:我得到了最基本的url(从http://开始),但推特也很容易替换一些tld,(www..net/.biz/.info只是其中的一小部分)而不是.nl .de .tk

现在我在想,也许有人已经发现了哪些是他们做的,哪些是他们不“缩短”的。

现在,因为我非常确定我的正则表达式也不是最好的,所以我在这里也不再赘述:

代码语言:javascript
复制
((http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)|([\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-09 16:46:49

我想通了,我在tld wikipage上找到了一句很重要的话。它规定所有国家的TLD都是两个字符长度。反之亦然;所有2个char tld都是国家/地区。考虑到这一点,我开始用twitter测试了其中的一大堆,我非常确定我现在知道了twitter缩短了哪些url,哪些没有缩短。

所有的url都以://或https://

  • All url's like something.non tld # .com .biz .mobi等开头(除了.arpa &.aero)
  • 所有的url's like tld #包括countries
  • links like http://[user]:[pass]@[something].[tld]
  • something.something.valid be shortened

现在要为它构建一个正则表达式,一旦我认为我有了它,我就会把它发布到这里:D

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

代码语言:javascript
复制
/(^(?:(?: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;

它还有一个主要缺陷,那就是它也接受domain.tld,而twitter不接受。

我希望这能在未来对某些人有所帮助。我很确定在网络上不会有很多关于这个的信息(或者至少我找不到)。

票数 0
EN

Stack Overflow用户

发布于 2012-05-09 16:15:01

http://support.twitter.com/articles/78124-how-to-shorten-links-urls#指出,发布到推特上的所有URL都将被重写为恰好19个字符。

票数 1
EN

Stack Overflow用户

发布于 2012-05-09 12:53:18

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10500117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档