我对如何进行任何正则表达式感到困惑。
例如,我必须对这种类型的字符串进行正则表达式,
提取/ https://upload.wikimedia.org/wikipedia/w_100/commons/f/f9/Phoenicopterus_ruber_in_São_Paulo_Zoo.jpg
提取/ https://upload.wikimedia.org/wikipedia/w_100,h_100,fl_progressive,dpr_2.0/commons/f/f9/Phoenicopterus_ruber_in_São_Paulo_Zoo.jpg
所以我只想匹配frm第一个字符串w_100和第二个字符串w_100,h_100,fl_progressive,dpr_2.0同样的URL。
var regex = /[a-z]_[0-9a-z]/g;
var found = string.match(regex);
它显示我输出类似
[“ w_1”,“ s_r”,“ r_i”,“ n_s”]
我想要这样的东西
[“ w_100”,“ h_100”,“ fl_progressive”,“ dpr_2.0”,]
有人可以为此建议我一个正则表达式吗?
最佳答案
您可以使用以下正则表达式
let str = '/https://upload.wikimedia.org/wikipedia/w_100,h_100,fl_progressive,dpr_2.0,ar_3:4,quality_auto:good,effect_auto_brightness,effect_auto_color:50,effect_green:-30/commons/f/f9/Phoenicopterus_ruber_in_São_Paulo_Zoo.jpg'
console.log(str.match(/([a-z]+_([a-z]+|[0-9]+(\.[0-9]+)?)(?=(,|\/)))/g))
更新以增加要求。
console.log(str.match(/([a-z]+(?:_|:|:-)?([a-z]+|[0-9]+(\.[0-9]+)?)(?=(,|\/)))+/g))