You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript移除字符串中的URL(含非HTTP/HTTPS开头的URL)

如何用JavaScript移除字符串中的URL(含非HTTP/HTTPS开头的URL)

要移除字符串中各类URL(包括不带HTTP/HTTPS协议的www开头、直接域名形式的URL),最直接的方式是使用正则表达式匹配并替换。以下是针对表单场景的实用实现:

基础实现:移除所有常见URL

这个函数可以匹配并移除带协议、www前缀、纯域名等多种格式的URL:

function removeUrls(str) {
  // 正则匹配规则:覆盖HTTP/HTTPS、www开头、纯域名及路径参数
  const urlPattern = /(https?:\/\/)?(www\.)?[\w-]+(\.[\w-]+)+(\/[\w\-./?%&=]*)?/gi;
  return str.replace(urlPattern, '');
}

// 测试用例
const inputStr = "不要点www.bad-site.com或者evil.co.uk/attack?x=1,还有http://malicious.net和//fake-domain.test";
const cleanedStr = removeUrls(inputStr);
console.log(cleanedStr); 
// 输出:"不要点或者,还有和"

进阶实现:排除邮箱地址

如果需要保留邮箱(比如user@example.com),可以调整正则排除邮箱格式:

function removeUrlsExcludeEmails(str) {
  // 匹配独立的URL,排除邮箱中的域名部分
  const urlPattern = /\b(?!mailto:)(https?:\/\/)?(www\.)?[\w-]+(\.[\w-]+)+(\/[\w\-./?%&=]*)?\b/gi;
  return str.replace(urlPattern, '');
}

// 测试用例
const mixedStr = "联系我user@good.com,不要访问www.bad.com";
const cleanedMixedStr = removeUrlsExcludeEmails(mixedStr);
console.log(cleanedMixedStr);
// 输出:"联系我user@good.com,不要访问"

正则规则说明

  • (https?:\/\/)?:匹配可选的HTTP/HTTPS协议(s可选,末尾斜杠可选)
  • (www\.)?:匹配可选的www前缀
  • [\w-]+(\.[\w-]+)+:匹配域名主体,支持多级域名(如co.uk)
  • (\/[\w\-./?%&=]*)?:匹配可选的路径、查询参数等部分
  • \b:单词边界,避免匹配字符串中间的域名片段(比如邮箱中的域名)

对于表单输入的恶意URL拦截,以上正则已经能覆盖绝大多数场景。如果需要处理更特殊的URL格式(比如带端口号),可以在正则中加入(:\d+)?来匹配端口。

内容的提问来源于stack exchange,提问作者Rue Vitale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:52:15