皆さん、こんにちは!
正規表現またはスプライスを作成して、文からリンクを削除し、リンクから文を削除しようとしています。
これまでのところ、私はここでこれを達成しています:
function replaceURL(text) {
var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
return text.replace(exp, "");
}
console.log(replaceURL1("Hi, watch my video https://youtu.be/urllink"))
次のような結果が欲しかったです:
let phrase = "Hi, watch my video";
let url = "https://youtu.be/urllink";
誰か助けてくれませんか?
正規表現がよくわかりません...
分割が成功したらどうなりますか?
ありがとう ️!
文字列のどの部分が常に存在し、どの部分が変更される可能性がありますか?たとえば、リンクを文の前に置くことはできますか?
– PM 77-1
2020 年 9 月 4 日 18:54
.split() を使用すると、分割された文字/文字列が削除されるので注意してください。たとえば、var str = "こんにちは、http://youtu.be/urllink" で私のビデオを見てください。 var result = str.split(/https?:\/\/.*$/); を行うことができます。ただし、一致した URL「http://-etc-」は結果の配列には含まれません。
– スティーブン P
2020 年 9 月 4 日 21:10
------------------------
これを次のように処理します。
文字列内の URL を識別し、URL を返す関数を作成します。
元の文字列に対して String.replace を使用して、見つかった URL を削除します
URL を規定する仕様では膨大な数のバリエーションと巨大な UTF-16 文字セットがサポートされているため、URL は正規表現を記述するのが非常に難しい場合があります。すべての URL が「http:」で始まると想定することで、そのような複雑さをすべて回避できる場合があります。または「https:」。
function getUrlFromString( string ) {
return string.match(/ *(https?:[^ ]+)/i)[0]
}
function separateUrlAndStatement( string ) {
let url = getUrlFromString(string)
let statement = string.replace(url, '')
return { url, statement }
}
3
ここで何かできるので、終了して編集します
– zl死
2020 年 9 月 4 日 19:00
賛成票ですが、先頭にスペースが入ります " http://youtu.be/etc"結果的には。非キャプチャ グループとキャプチャ グループを使用します: .match(/(?: *)(https?:\/\/[^ ]+$)/ )[1]
– スティーブン P
2020 年 9 月 4 日 21:21
ああ!良いキャッチです。ただし、両方の文字列をトリミングする方が簡単かもしれません。
– トム
2020 年 9 月 5 日 23:18