【问题标题】:GWT java URL ValidatorGWT java URL 验证器
【发布时间】:2010-12-21 10:21:21
【问题描述】:

有没有人知道一个函数可以在不使用任何 JSNI 的情况下在 GWT java 中验证 url 是否有效

【问题讨论】:

    标签: java validation url gwt


    【解决方案1】:

    我正在使用这个(使用正则表达式):

    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;
    }
    

    【讨论】:

    • 我发现这不会验证带有尾部斜杠的 URL,例如 'google.com'
    • @Andy:刚刚写了一个小的 JUnit,确实它在 google.com/ 上返回 false ——但它在 http://google.com/ 上返回 true(带有或不带有斜杠)。根据 URL 的定义,schema 前缀(例如'http')后跟:// 是强制性的,因此google.com 是无效的。
    • @Sven 啊,抱歉,我的印象是我在前面加上http://,但我完全有可能忘记了! (+1)
    • 如何检测带有参数的网址?类似于:https://xyz.com/getUser.action?id=1&pwd=2
    • 您可以先使用上面的 RegExp 来测试有效的 URL,然后再测试 URL 是否还包含“?” - 这应该是最简单的解决方案。否则,您将需要使用“?”从最后一个可选类 ([...?...]+) 开始,并将其设为强制性。
    【解决方案2】:

    org.apache.commons.validator.UrlValidator 和静态方法 isValid(String url) 在这里可能会有所帮助。

    【讨论】:

    • 请注意,这不适用于任何客户端 GWT,因为 Apache Commons 不是 GWT 模块..
    【解决方案3】:

    您应该在 GWT 中使用正则表达式。这是Regex in GWT to match URLsRegular Expressions and GWT类似的主题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-03
      相关资源
      最近更新 更多