gpt4 book ai didi

javascript - 正则表达式,如何在没有 ://的情况下选择//+

转载 作者:行者123 更新时间:2023-11-30 08:23:30 25 4
gpt4 key购买 nike

var test = https://test.com///?abc=def//&test=1e
console.log(test.replace(/[\/{2,}]+/g,'/'));

我想将所有 //+ 替换为单个 /,但不应更改 https://

我试过

(!:)[[/{2,}]+

但它不起作用。

如何将除 https://之外的所有//+ 替换为单个/?

最佳答案

我们可以利用replace replacement callback参数如下:

  1. ma​​tch: 匹配的子字符串。 (对应于上面的 $&。)
  2. p1、p2、pN:(对应于上面的 $1、$2 等。)
  3. offset:匹配的子串在整个被检查字符串中的偏移量
  4. string:整个字符串

我们只捕获前面没有 http/s 的连续 /。由于 https://(?:https?:\/\/) 匹配,但我们使用 ?: 丢弃该捕获组group 不会作为回调函数中的 capture 参数出现。现在 capture 参数仅包含正则表达式的最后一部分:(\/+) 我们现在将其替换为单个 /

let test = 'https://test.com///?abc=def//&test=1e';
const regex = /(?:https?:\/\/)|(\/+)/g;
test = test.replace(regex, (match, capture) => capture ? '/' : match);

console.log(test);

ES2018 答案

RegExp Lookbehind Assertions进入 ES2018,所以下面的正则表达式可以:

const test = 'https://test.com///?abc=def//&test=1e';
test.replace(/(?<!https?:)\/+/g, '/');
  • 检查以下 link在节点中获得支持。
  • Lookbehind 在 Chrome 62 发货.

关于javascript - 正则表达式,如何在没有 ://的情况下选择//+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49684055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com