繁体   English   中英

使用正则表达式从 url 分组匹配参数

[英]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_600l_text:Arial-blue.ttf_50_bold:hello how ru?,w_100,bg_4px_solid_034444,e_brightness:40l_fetch:AhadagduYbBHBbHbshbadad9878h==,w_70,x_-10,y_10

所以基本上我如何在/之间对参数进行分组

一种选择可能是使用URL ,然后从pathnamesearch获取您要查找的不同部分。

/上拆分这些值,然后在,上拆分。 过滤集合中以一次或多次小写字母 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM