1

我试图通知用户,如果他们在 textarea 中输入第三方 URL,我已经找到了解决方案,但这并不是我想要的,

if(/(http|https|ftp):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/i.test(content)){
    console.log('Link Detected');
}else if (/^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$/i.test(content)) {
    console.log('Link Detected');
}

此解决方案有效,但问题是,我想允许来自我的网站的外部图片链接和任何页面链接。

1) https://google.com => Not Allowed
2) https://google.com/image.jpg => Allowed
3) https: // mysite .com/contact => Allowed

有什么建议么?

4

1 回答 1

0

我不知道您的完整要求,但我假设您希望允许外部网址的子页面和图像。由于每个图像都是“隐式”的,因此始终是给定 url 的子页面,因此您可以简化正则表达式,使其不能以“/”或任何顶级域结尾。

我不是正则表达式专家,但要实现这一点,您可以先从您的 url 中删除任何尾随 '/',然后检查最后 3 或 4 个字符是否等于 '.xxx' 或 '.xx'(x 是通配符) .

于 2021-10-14T12:47:41.820 回答