JavaScript 正则表达式 : Is there a way to match slash after slash char in URL without negative lookbehind?

标签 javascript regex

我正在尝试匹配 url 中不属于协议(protocol)或查询字符串一部分的斜杠后跟斜杠。

是否有任何其他方法可以使用 REGEX 来执行此操作,但由于并非所有浏览器都支持它,因此无需回顾?

我的例子:

const urls = `
https://asdf.com//asdf//asdf
http://asdf.com//asdf//asdf
ftp://asdf.com//asdf//asdf
//asdf.com//asdf//asdf
//asdf.com//asdf//asdf?test=//
z39.50s://asdf//
`.replace(/(?<!(^[\w\d-.]{2,}\:|^|\?.*))\/(?=\/)/gim, '');
console.log(urls);

最佳答案

你可以使用

.replace(/^(\S*?\/\/)|(\?.*)$|(\/)+/g, '$1$2$3')

参见 this regex demo

详情

  • ^(\S*?\/\/) - 第 1 组(稍后用替换模式中的 $1 引用):0 个或多个非空白字符, 尽可能少,从字符串的开始,到第一个 //
  • | - 或者
  • (\?.*)$ - 第 2 组 ($2):? 字符和字符串的其余部分
  • | - 或者
  • (\/)+ - 第 3 组 ($3) 捕获单个 / 字符,1 次或多次(每次捕获 / 将覆盖组内存缓冲区中的前一个,因为它是“repeated capturing group”)

关于JavaScript 正则表达式 : Is there a way to match slash after slash char in URL without negative lookbehind?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53125198/

相关文章:

javascript - 灯箱关闭后,featherlight 灯箱中的 Youtube iframe 视频继续播放

regex - 使用正则表达式匹配 "magical"日期

java - 使用 Java 正则表达式验证长字符串中的日期

javascript - 如何在javascript中处理多个计算?

javascript - 如何在node.js中向GET请求添加参数?

python TypeError 格式字符串的参数不足

c++ regex - 除了字符序列之外的一切?

正则表达式删除除最后一次出现的单个字符之外的所有字符

javascript - 两个元素使用相同的事件函数

javascript - JS递归构建对象