我不知道用正则表达式替换。
这是正则表达式本身:
/(^https?:\/\/www\.dropbox\.com)(\/s\/\w+\/[\wа-яА-Яё]+\.\w+)/
它将应用于此类链接:
https://www.dropbox.com/s/2f15pra2dssf7zvwf7b/333.jpg?dl=0
https://www.dropbox.com/s/rhdkdf15dykctjdp004/376.jpg?dl=0
https://www.dropbox.com/s/kx70sj1gru4vsawhg9/517.jpg?dl=0
通常,任务是用以下内容替换例如第一个链接:
https://dl.dropboxusercontent.com/s/2f15pra2dssf7zvwf7b/333.jpg
也就是说,您需要替换链接的第一部分并删除不必要的垃圾,例如?dl=0.
这是函数本身.replace:
var1.replace(/(^https?:\/\/www\.dropbox\.com)(\/s\/\w+\/[\wа-яА-Яё]+\.\w+)/,
"https://dl.dropboxusercontent.com/$2")
regex101 示例:https ://regex101.com/r/ErgOTW/3
也就是说,其实我不明白为什么.replace它不只替换第一组中的匹配项并且不显示其他所有内容,而是直接替换所有找到的匹配项。我不知道如何避免它。
请告知解决方案。
您的正则表达式的问题是它没有捕获.之后的部分
?。因此,String.prototype.replace它仅适用于 URL 的主要部分。正确的正则表达式可能如下所示:
这是JSFiddle 上的一个工作示例。这里有一个关于 regex101 的例子来说明正则表达式本身是如何工作的。