Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从regex replace中省略特定字符串?_Javascript_Regex_Google Apps Script - Fatal编程技术网

Javascript 如何从regex replace中省略特定字符串?

Javascript 如何从regex replace中省略特定字符串?,javascript,regex,google-apps-script,Javascript,Regex,Google Apps Script,我需要遍历web地址并删除域扩展,除非web地址与特定内容匹配。在这一点上,我想完全忽略这场比赛。我在谷歌应用程序脚本中这样做,所以它可能缺少一些新的Javascript功能 我从最基本的开始,效果很好 source.replace(/(\.\S+\b)/gi,"") 现在,如果整个字符串是:cars.com,我想忽略扩展名 [abc.com, yahoo.com, amazon.com, cars.com] becomes [abc, yahoo, amazon, cars.com] so

我需要遍历web地址并删除域扩展,除非web地址与特定内容匹配。在这一点上,我想完全忽略这场比赛。我在谷歌应用程序脚本中这样做,所以它可能缺少一些新的Javascript功能

我从最基本的开始,效果很好

source.replace(/(\.\S+\b)/gi,"")
现在,如果整个字符串是:cars.com,我想忽略扩展名

[abc.com, yahoo.com, amazon.com, cars.com]
becomes
[abc, yahoo, amazon, cars.com]
source.replace(/(?<!cars\S+)(\.\S+\b)/gi,"")
我的问题就出在我的经验不足的情况下。下面的尝试仍然会从“cars.com”中删除扩展名

source.replace(/(?)?

我很确定我理解为什么,只是不确定如何修复它。

您可以使用带有负前瞻的正则表达式和捕获组:

/\b(?!cars\.com\b)([\w-]+)\.[\w-]+/

正则表达式详细信息:

  • \b
    :匹配单词边界
  • (?!cars\.com\b)
    :否定前瞻以放弃我们前面有
    cars.com
    的匹配
  • ([\w-]+)\.[\w-]+
    :匹配
    foo.bar
    格式中的字符串,并在捕获组中的点前捕获部分#1
  • “\1”
    用于替换将第一部分放回替换字符串中
代码:

const arr=['abc.com',
"雅虎网站",,
"amazon.com",,
"cars.com",;
常数re=/\b(?!cars\.com\b)([\w-]+)\[\w-]+/;
arr.forEach(el=>{
console.log(el,'=>',el.replace(re,'\1');

});
如果要忽略大量url,您的正则表达式可能会变长,您可以忽略一组url,映射url数组,并且仅在不忽略url的情况下应用正则表达式:

constURL=[“abc.com”、“yahoo.com”、“amazon.com”、“cars.com];
const ignore=[“cars.com”、“other.com”];
const result=url.map(url=>{
返回ignore.includes(url)?url:url.replace(/(\。\S+\b)/gi,“”);
});

console.log(result);
您想要的输出格式是什么?JSON、数组、CSV??