使用正则表达式检查URL是否包含任何参数

时间:2012-02-03 11:02:08

标签: java regex url parameters arguments

如何检查是否有URL包含一个或多个参数?

例如,如果网址为

.../PaymentGatewayManager?mode=5015

然后我们应该能够知道URL包含一个参数。或者如果URL是

.../PaymentGatewayManager

然后我们应该能够知道URL不包含任何参数。或者如果URL是

.../PaymentGatewayManager?mode=5015&test=456123&abc=78

然后我们应该能够知道URL包含三个参数,我们也应该能够使用Java中的任何正则表达式来了解参数名称和值。

3 个答案:

答案 0 :(得分:5)

如果你想用正则表达式做(这也可以优化以在组内进行搜索):

public static void main(String[] args) {
    String input = ".../PaymentGatewayManager?mode=5015&test=456123&test2=SomeRandomValue&abc=78";
    if(input.contains("?")){
        System.out.println("It does contain parameters");
        input = "&" + input.substring(input.indexOf("?")+1) + "&";

        System.out.println(input);

        Pattern p = Pattern.compile("&?(\\w.+?)=(.+?)&");
        Matcher m = p.matcher(input);

        while(m.find()){
            System.out.println("Token ->" + m.group(1));
            System.out.println("Value ->" + m.group(2));
        }
    }
}

答案 1 :(得分:3)

使用java.net.URI的方法获取有关网址的所有信息。

编辑:使用URI,而不是网址(感谢McDowell)。

答案 2 :(得分:2)

您可以使用String.split()作为分割符,java.util.StringTokenizer使用?对其进行标记,或使用&对其进行标记。如果您获得多个部分,则确保该URL包含参数。

要获取参数,请以相同方式将第二部分拆分为=。你会得到参数。按{{1}}拆分每一个将为您提供名称和值。