Javascript 在文本字符串中查找与Twitter使用完全相同的URL
有许多类似的问题,但是它们不能回答url没有Javascript 在文本字符串中查找与Twitter使用完全相同的URL,javascript,regex,twitter,Javascript,Regex,Twitter,有许多类似的问题,但是它们不能回答url没有www.,http://,等等的问题。我想做的是检查字符串是否包含具有任何类型url的url。当你提交一条推文时,Twitter就会这样做 可接受的URL包括但不限于: 谷歌网站 images.google.com 我从&尝试了两个正则表达式: (2)该公司目前的主要代码是:上述的主要代码是:上述的英国政府监管局(以下的代码)在上述的英国政府监管局(以下的代码)在上述的英国政府监管局(以下的代码)在上述的主要主要主要的主要是:::::::::
www.
,http://
,等等的问题。我想做的是检查字符串是否包含具有任何类型url的url。当你提交一条推文时,Twitter就会这样做
可接受的URL包括但不限于:
- 谷歌网站
- images.google.com
验证字符串是否包含RFC 3986中指定的URL。绝对URL和相对URL都受支持。我认为没有可靠的方法(随着时间的推移)来做到这一点。现在,很难跟上。无论如何,我尝试了一下
/
(
\b
(?:(https?|ftp):\/\/)?
(
(?:www\d{0,3}\.)?
(
[a-z0-9.-]+\.
(?:[a-z]{2,4}|museum|travel)
(?:\/[^\/\s]+)*
)
)
\b
)
/ix
捕获组
http://www.google.com/anyquerystringSAY/Rfy/srA/yh
http
www.
,例如:www.google.com/swrua8rua8rUWRWAURHAJSrjuhFAhjT/Rtgfsbdh
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
捕获组
http://www.google.com/anyquerystringSAY/Rfy/srA/yh
http
www.
,例如:www.google.com/swrua8rua8rUWRWAURHAJSrjuhFAhjT/Rtgfsbdh
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是否有效 这是我建议你做的
当然,这并没有考虑到有人可能已经发布了一个到他们内部网的链接——这对他们的一些追随者来说是可行的。答案是——你不能 例如,Twitter将歌手的名字Will.I.Am视为URL(.Am是有效的tld) 如果不知道每个tld上的所有域注册规则,就无法在不进行测试的情况下知道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)$< /代码>;否则所有的胡言乱语都可以通过“链接”。