正则表达式 - 如何选择除了后跟冒号

时间:2017-03-21 22:40:04

标签: javascript regex

我需要一些RegEx的帮助,它可能是一个基本的东西,但我找不到一个正确的方法如何做到这一点。请帮忙!

所以,这是我的问题:

我有一个URL列表,由于双斜杠而无效,如下所示: http://website.com//wp-content/folder/file.jpg,要解决此问题,我需要删除除第一个后跟冒号(http://)之外的所有双斜线,因此修复后的网址为:http://website.com/wp-content/folder/file.jpg

我需要使用RegExp。

变体1

url.replace(/\/\//g,'/'); // => http:/website.com/wp-content/folder/file.jpg

将替换所有双击(//),包括第一个,这是不正确的。

这里的例子: https://regex101.com/r/NhCVMz/2

2 个答案:

答案 0 :(得分:3)

您可以使用

url = url.replace(/(https?:\/\/)|(\/){2,}/g, "$1$2")

请参阅regex demo

注意:如果字符串是整个网址,则可能会使用模式开头的^锚点。

此模式将匹配并捕获http://https://,并将在带有$1反向引用的结果字符串中恢复该模式,并且所有其他2个或更多/的情况将会恢复由(\/){2,}匹配,因为捕获组不包含量词,因此只会将1次出现放回到结果字符串中。

答案 1 :(得分:1)

查找(^|[^:])/{2,}
替换$1/

分隔:/(^|[^:])\/{2,}/