javascript - URL 匹配正则表达式并不总是有效

标签 javascript regex

任何对正则表达式有深入了解的人都可以向我解释为什么这个正则表达式不适用于我的示例文本吗?或者更好的是,提出一个实际有效的正则表达式。

/((?:(?: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

最佳答案

这是我的想法:

((?:(?: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"

我希望这是您所需要的。

关于javascript - URL 匹配正则表达式并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003095/

相关文章:

javascript - 正则表达式封装

regex - 匹配正则表达式中字符串最后一个实例之后的所有字符

javascript - 为什么执行两次?

javascript - 改变第二列的颜色

javascript - 使用 Wordpress 网站时 Safari 上的砖石布局错误

javascript - 如何以简洁的方式在 JavaScript 中使用 replace 删除空格、破折号和句点?

javascript - 无法将 search() 与可变模式一起使用

javascript - 在 asp.net MVC 中打印表格行

javascript - 如何从 .php 脚本增加 javascript 变量

用于字节数日期的 Python 正则表达式