javascript - 正規表現または分割関数

okwaves2024-01-25  13

皆さん、こんにちは!

正規表現またはスプライスを作成して、文からリンクを削除し、リンクから文を削除しようとしています。

これまでのところ、私はここでこれを達成しています:

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

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。