正则表达式将 URL 转换为链接
Regex to convert URL to Links
我从这个网站"借用"了一个正则表达式:http://daringfireball.net/2010/07/improved_regex_for_matching_urls 这几乎是完整的,但我想匹配 exemple.com
我知道堆栈溢出并不 doyourhomework.com 但我花了很长时间思考没有结果。这是一个要测试的小提琴:http://jsfiddle.net/BGnMm/25/,你可以在最后看到 exemple.com 不是链接。
var reg=/'b((?:[a-z]['w-]+:(?:'/*)|www'd{0,3}[.]|[a-z0-9.'-]+[.][a-z]{2,4}'/)(?:[^'s()<>]+|'(([^'s()<>]+|('([^'s()<>]+')))*'))+(?:'(([^'s()<>]+|('([^'s()<>]+')))*')|[^'s`!()'[']{};:'".,<>?«»“”‘’]))/gi;
var allurl="http:foo.com/blah_blah http://foo.com/blah_blah/ (Something like http://foo.com/blah_blah) http://foo.com/blah_blah_(wikipedia) http://foo.com/more_(than)_one_(parens) (Something like http://foo.com/blah_blah_(wikipedia)) http://foo.com/blah_(wikipedia)#cite-1 http://foo.com/blah_(wikipedia)_blah#cite-1 http://foo.com/unicode_(✪)_in_parens http://foo.com/(something)?after=parens http://foo.com/blah_blah. http://foo.com/blah_blah/. <http://foo.com/blah_blah> <http://foo.com/blah_blah/> http://foo.com/blah_blah, http://www.extinguishedscholar.com/wpglob/?p=364. http://✪df.ws/1234 rdar://1234 rdar:/1234 x-yojimbo-item://6303E4C1-6A6E-45A6-AB9D-3A908F59AE0E message://%3c330e7f840905021726r6a4ba78dkf1fd71420c1bf6ff@mail.gmail.com%3e http://➡.ws/䨹 www.c.ws/䨹 <tag>http://example.com</tag> Just a www.example.com link. http://example.com/something?with,commas,in,url, but not at end What about <mailto:gruber@daringfireball.net?subject=TEST> (including brokets). mailto:name@example.com bit.ly/foo “is.gd/foo/” WWW.EXAMPLE.COM http://www.asianewsphoto.com/(S(neugxif4twuizg551ywh3f55))/Web_ENG/View_DetailPhoto.aspx?PicId=752 http://www.asianewsphoto.com/(S(neugxif4twuizg551ywh3f55)) http://lcweb2.loc.gov/cgi-bin/query/h?pp/horyd:@field(NUMBER+@band(thc+5a46634)) 6:00p filename.txt http://example.com/quotes-are-“part” ✪df.ws/1234 example.com example.com/";
document.write(allurl.replace(reg,"<a href='$1' >$1</a><br />"));
在{2,4}'/
后添加一个交替运算符(|
(,即
var reg=/'b((?:[a-z]['w-]+:(?:'/*)|www'd{0,3}[.]|[a-z0-9.'-]+[.][a-z]{2,4}'/|)(?:[^'s()<>]+|'(([^'s()<>]+|('([^'s()<>]+')))*'))+(?:'(([^'s()<>]+|('([^'s()<>]+')))*')|[^'s`!()'[']{};:'".,<>?«»“”‘’]))/gi;
关于这一点,你应该了解一些事情。 第一个未捕获的组 (?: … )
查找 URL 的"指示器"。 例如,一个指标是www
(后跟最多 3 位数字(。 但是,您正在寻求一种在没有任何指示器的情况下识别 URL 的方法。 因此,我们上面所做的是添加了一个子句">或空匹配"作为"有效"指示符。 这样做的结果是你的正则表达式现在的选择性降低了:各种字符串,不仅是 example.com,还有文件名.txt、3.141593 和 omg......真的被标识为网址! 您唯一的其他(现成的(选择是对后缀更具选择性,例如需要特定的后缀(com|org|net
(,但这会消除原始正则表达式的通用性,它根本没有指定任何后缀。
换句话说,您可能面临逻辑的限制,而不是正则表达式编写技能或正则表达式语言本身的限制。
请检查是否
var reg=/'b((?:[a-z]['w-]+:(?:'/*)|(?:www'd{0,3}[.])|[a-z0-9.'-]+[.][a-z]{2,4}'/{0,1})(?:[^'s()<>]+|'(([^'s()<>]+|('([^'s()<>]+')))*'))*(?:'(([^'s()<>]+|('([^'s()<>]+')))*')|[^'s`!()'[']{};:'".,<>?«»“”‘’]))/gi;
www(anyNumber(刚刚被放置了一次或零次。对不起,第一个答案,没有注意到文字。
相关文章:
- 将纯文本URL转换为可单击链接
- 使用Javascript将链接转换为iframe
- 修复Javascript代码以将文本中的所有Youtube链接转换为Youtube ID功能
- 如何在jquery中将链接转换为seo友好的url
- 每个部分附加一次多个链接转换变量
- 如何将地址链接转换为单击时更改页面的按钮
- 如何将文本链接转换为谷歌 API 剥离的真实链接
- Acrobat JavaScript-将JavaScript页面链接转换为“;真正的链接”;
- 如何基于活动转换中断或链接转换
- 将HTML中的链接转换为锚点
- HTML将链接转换为按钮
- 将超链接转换为按钮
- 将文本链接转换为图像链接
- 将所有文本链接转换为实际链接
- 使用JavaScript将超链接转换为纯文本
- ASP.. NET MVC 3:将JavaScript链接转换为嵌入式/压缩html标记的助手
- 正在将链接转换为链接
- 如何将href中有javascript:__doPostBack的链接转换为wget/curl/lynx可以理解的普通u
- 如何阻止Chrome在复制/粘贴时将相对链接转换为绝对链接
- 将指向SVG的链接转换为内联SVG元素