URL匹配正则表达式始终不起作用

时间:2014-06-02 20:52:22

标签: javascript regex

任何对regexp有深入了解的人都可以向我解释为什么这个正则表达式对我的示例文本不起作用?或者甚至更好,想出一个真正有效的正则表达式。

/((?:(?:ht|f)tps?:\/\/|www)[^<>\]]+?(?![^<>\]]*([>]|<\/))(?=[\s!,\]]|$))/igm

正则表达式来自这个问题:URL replace with anchor, not replacing existing anchors

示例文字:

"This is a simple test. \r\n\r\n" + 
"<u><b>A bold header with underscore:<\/b><\/u>\r\n" + 

"<i>THESE AREN'T TRANSFORMED. WHY??<\/i>\r\n" + 
"* http:\/\/www.example.net\/edit.php\r\n" + 
"* http:\/\/www.example.net\/test.php -> Some text\r\n" + 

"<i>THESE ARE:<\/i>\r\n" + 
"* http:\/\/www.example.net\/invite.php\r\n" + 
"* http:\/\/www.example.net\/forums.php\r\n"

Complete example of problem here

1 个答案:

答案 0 :(得分:1)

我想出了什么:

((?:(?:ht|f)tps?:\/\/|www)[^<>\]]+?(?![^<>\]]*(><\/))(?=[\s!,\]]|$))/igm

我用你的字符串测试它,它正在工作......

我将您的旧正则表达式([>]|<\/)更改为(><\/) ...在这种情况下,您正在执行OR,以便有可能匹配所有内容。

输出如下:

  • www.example.net/edit.php\r\n“
  • www.example.net/test.php
  • www.example.net/invite.php\r\n“
  • www.example.net/forums.php\r\n“

我希望这就是你所需要的。