我想使用正则表达式替换文本中的各种模式。我目前正在区分“普通”链接、图像和 YouTube 视频:
图片链接 -> < img src="link">
yt -> < iframe href="链接">
网站链接 ->
我正在使用以下正则表达式模式:
var image_reg = /(http:\/\/|https:\/\/).*(gif|jpg|jpeg|tiff|png)/ig;
var yt_reg = /(https:\/\/youtu.be\/|https:\/\/www.youtube.com\/watch\?v=)\S*/ig;
var url_reg = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)(?!\")/ig;
我需要找到一种方法来确保链接在与普通链接匹配时不是图像或 YT 视频。
我目前正在使用以下不完美的解决方案: 我从图像正则表达式开始,然后是 YT 正则表达式。之后,我运行链接正则表达式并替换每个不以“符号结尾的网址(因此不是 iframe 或 img 标记内的链接)
然而,这是非常危险和丑陋的。 实现我的目标的更好方法是什么?
最佳答案
您可以只全局搜索所有链接,并在replace方法的回调中检查该链接是否为youtube链接/图片来决定如何处理。
关于javascript - 在JS中匹配之前未匹配的正则表达式(url vs图片),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005290/