要检查的正则表达式以http://,https://或ftp://开头

时间:2011-11-09 06:44:17

标签: java regex startswith

我正在构建一个正则表达式来检查单词是以http://还是https://还是ftp://开头,我的代码如下,

     public static void main(String[] args) {
    try{
        String test = "http://yahoo.com";
        System.out.println(test.matches("^(http|https|ftp)://"));
    } finally{

    }
}

打印false。我还检查了stackoverflow post Regex to test if string begins with http:// or https://

正则表达式似乎是正确的,但为什么它不匹配?我甚至试过^(http|https|ftp)\://^(http|https|ftp)\\://

4 个答案:

答案 0 :(得分:85)

您需要整个输入匹配。

System.out.println(test.matches("^(http|https|ftp)://.*$")); 

修改 :(基于@davidchambers的评论)

System.out.println(test.matches("^(https?|ftp)://.*$")); 

答案 1 :(得分:34)

除非有一些令人信服的理由使用正则表达式,否则我只会使用String.startsWith:

bool matches = test.startsWith("http://")
            || test.startsWith("https://") 
            || test.startsWith("ftp://");

如果速度更快,我也不会感到惊讶。

答案 2 :(得分:4)

如果你想以不区分大小写的方式做,那就更好了:

System.out.println(test.matches("^(?i)(https?|ftp)://.*$")); 

答案 3 :(得分:0)

test.matches()方法检查所有text.use test.find()