Ответ 1
Здесь вам нужно полное совпадение ввода.
System.out.println(test.matches("^(http|https|ftp)://.*$"));
Изменить:( На основе комментария @davidchambers)
System.out.println(test.matches("^(https?|ftp)://.*$"));
Я создаю регулярное выражение, чтобы проверить, начинается ли слово с 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
. Я также проверил postoverflow post Regex, чтобы проверить, начинается ли строка с http://или https://
Регулярное выражение кажется правильным, но почему оно не соответствует?. Я даже пробовал ^(http|https|ftp)\://
и ^(http|https|ftp)\\://
Здесь вам нужно полное совпадение ввода.
System.out.println(test.matches("^(http|https|ftp)://.*$"));
Изменить:( На основе комментария @davidchambers)
System.out.println(test.matches("^(https?|ftp)://.*$"));
Если есть некоторая веская причина использовать регулярное выражение, я бы просто использовал String.startsWith:
bool matches = test.startsWith("http://")
|| test.startsWith("https://")
|| test.startsWith("ftp://");
Я не удивлюсь, если это будет быстрее.
Если вы хотите сделать это без учета регистра, это лучше:
System.out.println(test.matches("^(?i)(https?|ftp)://.*$"));
Метод test.matches() проверяет все text.use test.find()