首页 > 解决方案 > 正则表达式或拆分函数

问题描述

大家下午好!

我正在尝试制作一个正则表达式或拼接来删除句子中的链接和链接中的句子。

到目前为止,我在这里实现了这一点:

function replaceURL(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
    return text.replace(exp, "$1");
}
console.log(replaceURL1("Hi, watch my video https://youtu.be/urllink"))

我想要这样的结果:

let phrase = "Hi, watch my video";
let url = "https://youtu.be/urllink";

有人可以帮助我吗?我不太了解正则表达式......如果你成功拆分会怎么样?

谢谢️!

标签: javascriptjquerynode.js

解决方案


我会这样处理:

  1. 编写一个可以识别字符串中的 URL 的函数,该函数返回 URL
  2. 在原始字符串上使用 String.replace 删除找到的 URL

URL 可能很难为其编写正则表达式,因为管理 URL 的规范支持大量的变体以及巨大的 UTF-16 字符集。您可以通过假设每个 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 }
}


推荐阅读