任何对正则表达式有深入了解的人都可以向我解释为什么这个正则表达式不适用于我的示例文本吗?或者更好的是,提出一个实际有效的正则表达式。
/((?:(?: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"
最佳答案
这是我的想法:
((?:(?: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/