Facebook的URL匹配算法如何运作?

Sam*_*Sam 7 javascript regex facebook

你知道如果你去facebook.com并输入一个URL到状态更新textarea它会自动被检测到,Facebook将显示该URL /链接数据的一些快照?Facebook甚至不关心您是否输入带或不带协议的URL http://.

我想要复制这种行为.现在我有这个正则表达式:

((?:https?:\/\/)?)((?:[a-zA-Z0-9\-]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2})(?:[a-z0-9\._\/~%\-\+&\#\?!=\(\)@]*)?(?:#?(?:[w]+)?)?)
Run Code Online (Sandbox Code Playgroud)

我用它来匹配在textarea中输入的URL.但是,它有误报; 它会匹配document.write(foo)哪个显然不是URL.

Facebook似乎没有这个问题.事实上,我可以在Facebook的textarea中键入"yahoo.com",它会将其识别为URL.但如果我键入"example.com",它就不会识别它.所以,这意味着Facebook必须做的不仅仅是正则表达式匹配.或者我错了吗?

总之,我想知道Facebook在做什么,我想知道如何复制它.非常感谢任何想法,技巧或解决方案.

谢谢阅读.

bit*_*der 0

facebook正在使用contenteditable div来检测链接,最后我建议你听一下每个按键,因为它有多种用途,例如按@后你也会看到朋友列表