[英]match parameter in group wise from url using regular expression
我有一个正则表达式
/([A-Za-z]+_([A-Za-z]+|-?[A-Z0-9]+(\.[A_Z0-9]+)?|(?:_|:|:-|-[a-zA-Z]+|\.[a-zA-Z]+|[A-Z0-9a-z]+|=|\s|\?|\%|\.|!|#|\*)?)+(?=(,|\/)))+/g
它匹配这样的网址
http://sample.com/transform/demo.sample.com/fetch/c_crop,g_north,x_100,y_30,w_400,h_600/l_text:Arial-blue.ttf_50_bold:hello how r u?,w_100,bg_4px_solid_034444,e_brightness:40/l_fetch:AhadagduYbBHBbHbshbadad9878h==,w_70,x_-10,y_10/sample.jpg
URL 每次都应该不同。
现在我想匹配组明智像c_crop,g_north,x_100,y_30,w_400,h_600
, l_text:Arial-blue.ttf_50_bold:hello how ru?,w_100,bg_4px_solid_034444,e_brightness:40
, l_fetch:AhadagduYbBHBbHbshbadad9878h==,w_70,x_-10,y_10
。
所以基本上我如何在/
之间对参数进行分组
一种选择可能是使用URL ,然后从pathname和search获取您要查找的不同部分。
在/
上拆分这些值,然后在,
上拆分。 过滤集合中以一次或多次小写字母 az 后跟下划线开头的值,然后匹配除逗号以外的任何字符 1 次或多次
\b[a-z]+_[^,]+
例如
let s = `http://sample.com/transform/demo.sample.com/fetch/c_crop,g_north,x_100,y_30,w_400,h_600/l_text:Arial-blue.ttf_50_bold:hello how ru?,w_100,bg_4px_solid_034444,e_brightness:40/l_fetch:AhadagduYbBHBbHbshbadad9878h==,w_70,x_-10,y_10/sample.jpg`; let url = new URL(s); let coll = url.pathname.split('/') .concat(url.search.split("/")) .flatMap(s => s.split(",")) .filter(i => /^[az]+_[^,]+$/.test(i)); console.log(coll);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.