回答編集履歴

1

追記

2018/01/11 07:33

投稿

m.ts10806
m.ts10806

スコア80850

test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  ```
18
18
 
19
- ```(/\S*)?)```の()を取っ払っただけです。
19
+ (/\S*)?)の()を取っ払っただけです。
20
20
 
21
21
 
22
22
 
@@ -53,3 +53,117 @@
53
53
 
54
54
 
55
55
  ヤフーニュースです。<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>
56
+
57
+
58
+
59
+
60
+
61
+
62
+
63
+ 追記[16:32]
64
+
65
+ -------------------------------------
66
+
67
+ 別サイトを参考に修正してみました。
68
+
69
+ - [javascript 文字列からURLを抽出しAタグを張る関数。](https://www.bhnt.co.jp/blog/%E9%96%8B%E7%99%BA%E8%A8%80%E8%AA%9E/javascript/javascript-%E6%96%87%E5%AD%97%E5%88%97%E3%81%8B%E3%82%89url%E3%82%92%E6%8A%BD%E5%87%BA%E3%81%97a%E3%82%BF%E3%82%B0%E3%82%92%E5%BC%B5%E3%82%8B%E9%96%A2%E6%95%B0%E3%80%82/)
70
+
71
+
72
+
73
+ 「http://で始まる文字を」とのことなのでftp,ftpsを除外しています。
74
+
75
+ (含めたい場合は冒頭部分をちょっと修正する必要がありますね
76
+
77
+
78
+
79
+ ```javascript
80
+
81
+
82
+
83
+ function urlLink(text){
84
+
85
+ text = text.replace(
86
+
87
+ /((h?)(ttps?://[a-zA-Z0-9.\-_@:/~?%&;=+#',*!]+))/g,
88
+
89
+ '<a href="$1">$1</a>'
90
+
91
+ );
92
+
93
+
94
+
95
+ console.log(text);
96
+
97
+ }
98
+
99
+
100
+
101
+
102
+
103
+ urlLink("ヤフーニュースです。(https://news.yahoo.co.jp/)"); //ご提示のもの
104
+
105
+ //ヤフーニュースです。(<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>)
106
+
107
+
108
+
109
+ urlLink("ヤフーニュースです。(https://news.yahoo.co.jp/)"); //全角かっこ
110
+
111
+ //ヤフーニュースです。(<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>)
112
+
113
+
114
+
115
+ urlLink("ヤフーニュースです。https://news.yahoo.co.jp/"); //かっこなし
116
+
117
+ //ヤフーニュースです。<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>
118
+
119
+
120
+
121
+ urlLink("ヤフーニュースhttps://news.yahoo.co.jp/です。"); //テキストの途中に含む場合
122
+
123
+ //ヤフーニュース<a href="https://news.yahoo.co.jp/">https://news.yahoo.co.jp/</a>です。
124
+
125
+
126
+
127
+ urlLink("https://news.yahoo.co.jp/ヤフーニュースhttps://news.yahoo.co.jp/です。"); //複数含む場合
128
+
129
+ //<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>です。
130
+
131
+
132
+
133
+ urlLink("ヤフーニュースhttps://news.yahoo.co.jpです。"); // スラッシュで終わらない
134
+
135
+ //ヤフーニュース<a href="https://news.yahoo.co.jp">https://news.yahoo.co.jp</a>です。
136
+
137
+
138
+
139
+ urlLink("ヤフーニュースhttps://news.yahoo.co.jp/aです。"); // スラッシュで終わらない(階層あり)
140
+
141
+ //ヤフーニュース<a href="https://news.yahoo.co.jp/a">https://news.yahoo.co.jp/a</a>です。
142
+
143
+
144
+
145
+ urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/です。"); // 階層ありでスラッシュで終わる
146
+
147
+ //ヤフーニュース<a href="https://news.yahoo.co.jp/a/">https://news.yahoo.co.jp/a/</a>です。
148
+
149
+
150
+
151
+ urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/ab/abc/abcdです。"); // 階層いっぱい
152
+
153
+ //ヤフーニュース<a href="https://news.yahoo.co.jp/a/ab/abc/abcd">https://news.yahoo.co.jp/a/ab/abc/abcd</a>です。
154
+
155
+
156
+
157
+ urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/ab/?key=valueです。"); // クエリ
158
+
159
+ //ヤフーニュース<a href="https://news.yahoo.co.jp/a/ab/?key=value">https://news.yahoo.co.jp/a/ab/?key=value</a>です。
160
+
161
+
162
+
163
+ urlLink("ヤフーニュースhttps://news.yahoo.co.jp/a/ab/?key=value&key2=value2です。"); // クエリ複数
164
+
165
+ //ヤフーニュース<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>です。
166
+
167
+
168
+
169
+ ```