ご所望どおりの動作となっているか分かりませんが・・・
javascript
1text = text.replace(
2 /((http|https|ftp|ftps)\://[a-zA-Z0-9\-.]+.[a-zA-Z]{2,3}/\S*?)/g,
3 '<a href="$1">$1</a>'
4);
5
(/\S*)?)の()を取っ払っただけです。
3パターン試しました。
1.ご提示のもの。
ヤフーニュースです。(https://news.yahoo.co.jp/)
→
ヤフーニュースです。(<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>)
2.全角かっこ
ヤフーニュースです。(https://news.yahoo.co.jp/)
→
ヤフーニュースです。(<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>)
3.かっこなし
ヤフーニュースです。https://news.yahoo.co.jp/
→
ヤフーニュースです。<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>
追記[16:32]
別サイトを参考に修正してみました。
「http://で始まる文字を」とのことなのでftp,ftpsを除外しています。
(含めたい場合は冒頭部分をちょっと修正する必要がありますね
javascript
1
2function urlLink(text){
3 text = text.replace(
4 /((h?)(ttps?://[a-zA-Z0-9.\-_@:/~?%&;=+#',*!]+))/g,
5 '<a href="$1">$1</a>'
6 );
7
8 console.log(text);
9}
10
11
12urlLink("ヤフーニュースです。(https://news.yahoo.co.jp/)"); //ご提示のもの
13//ヤフーニュースです。(<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>)
14
15urlLink("ヤフーニュースです。(https://news.yahoo.co.jp/)"); //全角かっこ
16//ヤフーニュースです。(<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>)
17
18urlLink("ヤフーニュースです。https://news.yahoo.co.jp/"); //かっこなし
19//ヤフーニュースです。<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>
20
21urlLink("ヤフーニュースhttps://news.yahoo.co.jp/です。"); //テキストの途中に含む場合
22//ヤフーニュース<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>です。
23
24urlLink("https://news.yahoo.co.jp/ヤフーニュースhttps://news.yahoo.co.jp/です。"); //複数含む場合
25//<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>ヤフーニュース<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>です。
26
27urlLink("ヤフーニュースhttps://news.yahoo.co.jpです。"); // スラッシュで終わらない
28//ヤフーニュース<a href="https://news.yahoo.co.jp">https://news.yahoo.co.jp</a>です。
29
30urlLink("ヤフーニュースhttps://news.yahoo.co.jp/aです。"); // スラッシュで終わらない(階層あり)
31//ヤフーニュース<a href="https://news.yahoo.co.jp/a">https://news.yahoo.co.jp/a</a>です。
32
33urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/です。"); // 階層ありでスラッシュで終わる
34//ヤフーニュース<a href="https://news.yahoo.co.jp/a/">https://news.yahoo.co.jp/a/</a>です。
35
36urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/ab/abc/abcdです。"); // 階層いっぱい
37//ヤフーニュース<a href="https://news.yahoo.co.jp/a/ab/abc/abcd">https://news.yahoo.co.jp/a/ab/abc/abcd</a>です。
38
39urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/ab/?key=valueです。"); // クエリ
40//ヤフーニュース<a href="https://news.yahoo.co.jp/a/ab/?key=value">https://news.yahoo.co.jp/a/ab/?key=value</a>です。
41
42urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/ab/?key=value&key2=value2です。"); // クエリ複数
43//ヤフーニュース<a href="https://news.yahoo.co.jp/a/ab/?key=value&key2=value2">https://news.yahoo.co.jp/a/ab/?key=value&key2=value2</a>です。
44