Добавить -> в качестве разделителя к шаблону URL

Для извлечения URL я использую это регулярное выражение:

'/https?\:\/\/[^\",\s\]\|]+/i'

(заканчивается пробелом ", запятой или |).

Проблема в том, что мне тоже нужно добавить --> " (3 символа -->) как разрыв URL. Однако не повезло.

PS Я знаю, что это не идеальная проверка URL, однако URL хранятся в строке в БД, а пробел, запятая, ", | и -> определенно являются разделителями URL (если встречаются в конце).

2 ответа

Решение

Следующее регулярное выражение должно сделать это:

https?:\/\/.*?(?=\s|,|"|\||-->|$)

посмотреть демо

Чтобы остановиться на многосимвольном разделителе, шаблон должен многократно продвигаться на 1 символ до тех пор, пока вы не найдете разделитель в предвкушении:

(?:(?!delimiter).)*

В твоем случае:

https?://(?:(?!-->)[^",\]\s|])+
Другие вопросы по тегам