Мне нужно добавить теги bbcode к URL-адресам, на которых нет тегов. В настоящее время я использую регулярные выражения, чтобы найти их, но у меня проблемы с некоторыми случаями.
Вот случаи, на которых я тестирую:
www.example.com //OK
http://example.com //OK
http://www.example.com //OK
http://www.example.com/test/ //OK
http://www.example.com/test/image.jpg //OK
www.example.com\nSome random text //not working, should find www.example.com only
Some random text\nhttp://www.example.com //OK
http://example.com\nSome random text //not working, should find http://example.com only
http://www.example.com\nSome random text //not working, should find http://www.example.com only
Some random text\nhttp://www.example.com\nSome random text //not working, should find http://www.example.com only
http://www.example.com\nhttp://www.example.com/test/image.jpg\n //not working should find both http://www.example.com and http://www.example.com/test/image.jpg
[IMG]http://www.example.com/test/image.jpg[/IMG] //OK
[URL]http://www.example.com[/URL] //OK
[url=http://www.example.com]Domain[/url] //OK
[url=http://www.example.com]http://www.example.com[/url] //OK
Я использую Notepad ++ для тестирования и регулярное выражение:
(?:(?<!(\[\/url\]|\[\/url=)))(((https?|ftps?|ircs?):\/\/\S+)|(www\.\S+))(?:(?<![[:punct:]])|(?<=\/))(\s|\.?$)
Так что, я думаю, самая большая проблема, с которой я столкнулся, это то, что регулярное выражение не останавливается на \ n-символе.