如何构造正则表达式表达式,使其仅在URL具有“loc”参数时才匹配。
现在使用以下表达式,它不仅匹配“loc”,还匹配以loc结尾的其他参数名称。
var reg = new RegExp("(?:http)://(.*loc=)|(?:&.*)$");
var url = "http://www.example.com/access/alternative_alternatif.action?teng=1234.pdf&tfra=1234.pdf&l=eng&aloc=1234.pdf"; //this match even though its "aloc".
var myparse = url.replace(reg,''); //Output = 1234.pdf
我尝试在loc之前添加分号,但它不起作用。任何帮助将不胜感激。
var reg = new RegExp("(?:http)://(.;*loc=)|(?:&.*)$");
编辑:我已经尝试了所有建议,不幸的是它们都与“* loc”参数匹配url而不仅仅是“loc”
答案 0 :(得分:1)
从索引1获取匹配的组
(?:&|&|\?)\bloc=(.*?)(?:&|$)
这是demo
示例代码:
var url = "http://www.example.com/access/alternative_alternatif.action?teng=1234.pdf&tfra=1234.pdf&l=eng&aloc=1234.pdf";
var found = url.match(/(?:&|&|\\?)\bloc=(.*?)(?:&|$)/);
注意:检查undefined / null和size。
答案 1 :(得分:0)
只是正则表达式:
(http\S*;loc\S*)"
这将匹配任何网址&#34 ;; loc"在里面。 你在比赛中的位置之前会有什么期望?我的意思是在" loc"?
之前总是有一个角色或其他东西