javascript - 如何从正则表达式替换中省略特定字符串?
问题描述
我需要遍历网址并删除域扩展名,除非网址与特定内容匹配。那时我想完全忽略那场比赛。我在 Google Apps Script 中执行此操作,因此它可能缺少一些较新的 Javascript 功能。
我从工作正常的基础开始。
source.replace(/(\.\S+\b)/gi,"")
现在,如果整个字符串是:cars.com,我想忽略扩展名。
[abc.com, yahoo.com, amazon.com, cars.com]
becomes
[abc, yahoo, amazon, cars.com]
我的前瞻/后视经验很少,这就是我的问题所在。以下尝试仍会从“cars.com”中删除扩展名。
source.replace(/(?<!cars\S+)(\.\S+\b)/gi,"")
我很确定我明白为什么,我只是不知道如何解决它。
解决方案
如果您有很多要忽略的 url,您的正则表达式可能会变得非常长,您可以有一个要忽略的 url 数组,映射 urls 数组并且仅在不忽略 url 时应用正则表达式:
const urls = ["abc.com", "yahoo.com", "amazon.com", "cars.com"];
const ignore = ["cars.com", "other.com"];
const result = urls.map(url => {
return ignore.includes(url) ? url : url.replace(/(\.\S+\b)/gi, "");
});
console.log(result);
推荐阅读
- python - 如何仅使用计数图绘制图表以显示数据集中所有列的空值数量?
- elasticsearch - ElasticSearch 聚合太慢
- sql - 数据库迁移:识别 NoSQL 数据库中关系的工具?
- orocommerce - 如何向 API 公开我的扩展字段?
- amazon-web-services - Can i reserve EC2 instance hourly based to save cost?
- ruby - Call super method from C function
- snowflake-cloud-data-platform - 即使功能存在于雪花中,show grants on function 也会向帐户管理员提供“不存在或未授权”
- arrays - 使用数组 foreach() 创建元素
- reactjs - 使用 redux-form 库在 React 中输入字符后失去对输入字段的关注
- docker - 还原跳过了 nunit 测试