const str = `[url=http://ya.ru]http://ya.ru[/url]текст https://ya.ru/1 [url=http://ya.ru]Ссылка[/url], [url=www.ya.ru]Ссылка[/url] https://ya.ru/2 www.ya.ru/3 ftp://ya.ru/4 http://ya.ru/5 http://ya.ru/6 http://ya.ru/7, http://ya.ru/8 ` const re = /\[url=(?:(?:https?|ftp):\/\/[^\s/$.?#].\S*)?\s*\](?:(?!\[\/url\]).)*\[\/url\]|((?:(?:ftp|https?):\/\/|(www\.))[^\s/$.?#].\S*)/gi const replacer = ($0, $1, $2) => { return $2 ? '<a href="http://' + $0 + '">' + $0 + '</a>' : $1 ? '<a href="' + $0 + '">' + $0 + '</a>' : $0 } const out = str.replace(re, replacer) console.log(out) |