正则表达式扩展需求:合并特定键匹配与含@值的动态键匹配
解决URL键值对匹配的正则表达式扩展需求
你需要将原有正则扩展为同时满足两类匹配规则:
- 匹配键名为
name、identify、test的键值对 - 匹配值中包含
@符号的任意键值对
最终正则表达式
(?:(name|identify|test)(?:=|%3D)[^&]*|(?:[^&=]+)(?:=|%3D)[^&]*@[^&]*)
规则拆解
(?:name|identify|test)(?:=|%3D)[^&]*:保留原有匹配逻辑,针对指定键名匹配完整键值对,(?:...)为非捕获分组,减少性能消耗|:逻辑或运算符,分隔两组独立匹配规则(?:[^&=]+)(?:=|%3D)[^&]*@[^&]*:匹配值含@的任意键值对:(?:[^&=]+):匹配任意非&、非=的键名,避免误匹配URL路径或分隔符(?:=|%3D):匹配原义等号或URL编码后的等号%3D[^&]*@[^&]*:匹配包含@的完整值内容,直到下一个&分隔符结束
测试验证
针对输入URL:
https://www.me.com/?name=bob&identify=bob1&test=email@me.com&validKey=validValue&badKey=test2@test.com
匹配结果如下:
name=bobidentify=bob1test=email@me.combadKey=test2@test.com
内容的提问来源于stack exchange,提问作者Jacques Ramsden
相关产品推荐
相关产品推荐

