有没有一种在GWT Java中纯粹地验证URL是否有效而不使用任何JSNI的函数?
我正在使用这个(利用正则表达式):
private RegExp urlValidator;
private RegExp urlPlusTldValidator;
public boolean isValidUrl(String url, boolean topLevelDomainRequired) {
if (urlValidator == null || urlPlusTldValidator == null) {
urlValidator = RegExp.compile("^((ftp|http|https)://[\\w@.\\-\\_]+(:\\d{1,5})?(/[\\w#!:.?+=&%@!\\_\\-/]+)*){1}$");
urlPlusTldValidator = RegExp.compile("^((ftp|http|https)://[\\w@.\\-\\_]+\\.[a-zA-Z]{2,}(:\\d{1,5})?(/[\\w#!:.?+=&%@!\\_\\-/]+)*){1}$");
}
return (topLevelDomainRequired ? urlPlusTldValidator : urlValidator).exec(url) != null;
}
org.apache.commons.validator.UrlValidator和静态方法isValid(String url)可能对此有所帮助。
google.com/
上返回了 false,但是在http://google.com/
上(无论是否有尾随斜杠)都返回了 true。根据URL的定义,模式前缀(例如“http”)后跟://
是必需的,因此google.com
是无效的。 - svubhttp://
,但很有可能我忘记了!(+1) - Andy Smithhttps://xyz.com/getUser.action?id=1&pwd=2
。 - Sourabh