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

2022-08-31 16:32:38

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

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

    }
}

它打印 .我还检查了正则表达式之后的堆栈溢出,以测试字符串是否以 http:// 或 https://false

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


答案 1

您需要在此处进行整个输入匹配。

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

编辑:(基于@davidchambers的评论)

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

答案 2

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

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

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