regex 删除@ id和文本包含来自电报机器人消息的链接

vdzxcuhz  于 2023-08-08  发布在  其他
关注(0)|答案(2)|浏览(103)

我有一个电报机器人,我想删除文本中的所有链接,但在这里,我有两个问题:
1.我不知道如何删除所有的ID像这样:@id与当前正则表达式,我在我的代码
2.我还想删除所有的字符串有链接(在电报添加链接到一个文本,选择文本,然后右键单击>格式>创建链接,然后你的文本的颜色会变成蓝色,你的文本将成为一个链接)
这是我当前的代码,并从输入中删除链接:

bot.on("text", async function (msg){
  const text = msg.text.replace(
    /\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/g,
    ""
  );

  console.log(text);
})

bot.start();

字符串
但我想删除id(@后的一切)和文本包含链接

  • 我还使用TeleBot来使用Telegram bot*
6mzjoqzu

6mzjoqzu1#

您可以使用|\B@[^\s@]+向您的模式添加一个交替|,它匹配@后跟除@以外的任何字符或空格字符

注意,只有匹配时,才可以将第一个部分的外部捕获组转换为非捕获组,因为只使用空字符串替换匹配。

\b(?:(?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))|\B@[^\s@]+

字符串
See a regex demo

vsdwdz23

vsdwdz232#

就用这个

.*\B@(?=\w{5,32}\b)[a-zA-Z0-9]+(?:_[a-zA-Z0-9]+)*.*

字符串
删除@之后所有内容

相关问题