正则表达式用于提取URL的部分

时间:2014-08-11 13:11:37

标签: javascript regex

如何构造正则表达式表达式,使其仅在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”

2 个答案:

答案 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"?

之前总是有一个角色或其他东西