字符串如下: _search=false&nd;=1566206479316&rows;=50&page;=2&sidx;=&sord;=desc&businessType;=&containerTypeId;=&operStatus;=&dispatchStatus;=&portId;=&customerId;=&billNo;=&orderNo;=&containerNo;=&customerOrderNo;=&yhNO;=&storageYardId;=&createBy;=&makeboxBeginDate;=2019-08-01&makeboxEndDate;=2019-08-19&dispatchGroupId;=&cityCode;=&salesmanid;=&relateAddrAddress;=
target:
_search=false&
nd=1566206479316&
rows=50&
page=2
sidx=&
sord=desc&
businessType=&
makeboxBeginDate=2019-08-01&
makeboxEndDate=2019-08-19&
难点是中间有两个日期所以写的很费劲。
目前在用的:
(\w+)=(\w*[-]*\w+[-]*\w+)&
这个正则问题是 page=2 匹不到。page=10,11,12 两位数就可以
不太懂是什么问题.
1
a494836960 2019-08-20 10:10:40 +08:00
js: replace(/(.*?);?=(.*?)&?/g,'$1=$2\n')
|
2
a494836960 2019-08-20 10:12:55 +08:00
另外你的正则 (\w*[-]*\w+[-]*\w+) 这段有两个 \w+ 所以匹配结果最少要 两位数
|
3
rrfeng 2019-08-20 10:13:30 +08:00
看着这么整齐不如直接 split 再进一步处理。
|
5
Martin9 OP |
6
xenme 2019-08-20 10:30:24 +08:00 1
|
7
a494836960 2019-08-20 10:30:27 +08:00 1
/(.*?);?=(.*?)&/g 这样试试。。
|
8
Martin9 OP @xenme @a494836960 谢谢已发铜币
|
9
imdong 2019-08-20 10:53:30 +08:00 1
(?:^|\&)([^;=]+);?=([^&]+)?(?=$|\&)
https://regex101.com/r/vzBBz4/3 最少匹配,\w .* 这样的写法会计算次数太多。 这种匹配广泛的我建议用 [^] 排除法。 首末用了两次断言, |
10
autoxbc 2019-08-20 12:08:25 +08:00 1
如果你的项目是 js,可以考虑用 URI.js
每次用正则去匹配结构化的数据,就等于重新写了一遍这种数据结构的解析器 我们应该重新写解析器吗?不,应该用别人已经写好的 |