javascript - 删除@ids 和文本包含来自电报机器人消息的链接
问题描述
我有一个电报机器人,我想从文本中删除所有链接,但是在这里,我有两个问题:
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();
但我想删除 ids(@ 之后的所有内容)并且文本包含链接
我也使用TeleBot来使用电报机器人
解决方案
您可以使用|
匹配 @ 后跟除 @ 或空格字符之外的任何字符的替换添加到您的模式|\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@]+
推荐阅读
- node.js - 如何指定一个文件让heroku首先执行
- hpc - 如何知道 perf 中的事件类型
- python - 无法调用 cv2.HoughLines(),如何使用 python 代码实现 cv2.HoughLines() self
- angular - AgGrid 选择单元格编辑器
- javascript - JavaScript 根本没有在 HTML 文件中运行
- bluetooth - 蓝牙 GATT 向 BLE 设备发送数据
- kernel - 内核 5.12 不能使用 find_module
- html - 嵌入带有本地备份的 youtube 视频,以防 YT 不可用(例如删除)
- mysql - nodejs连接mysql报错ER_NOT_SUPPORTED_AUTH_MODE?
- json - 从 Mongodb 提取到 python 的嵌套 Json 字段