2

所以我正在使用 UrlValidator (org.apache.commons.validator.routines.UrlValidator),我想知道是否有办法自定义它允许的域。现在它似乎只允许顶级域名,但我有一个或两个我想要有效的不在该列表中,例如“.corp”(列表可在此处找到:http: //data.iana.org/TLD/tlds-alpha -by-domain.txt)。是否有设置或解决方法,因此我不必创建自己的 url 验证器,并且可以将其与添加的域一起使用?

4

2 回答 2

4

您可以在下面找到 JUnit 测试用例。

import org.apache.commons.validator.routines.DomainValidator;
import org.apache.commons.validator.routines.UrlValidator;

class UrlValidatorTestCase extends TestCase {

  private static final String[] GENERIC_TLDS_PLUS = new String[] { "corp" };

  static {
    DomainValidator.updateTLDOverride(DomainValidator.ArrayType.GENERIC_PLUS, GENERIC_TLDS_PLUS);
  }

  public void test_UrlValidator_isValid_corp_tld() {
    assertTrue(UrlValidator.getInstance().isValid("http://domainlabel.corp"));
  }
}

使用 commons-validator 1.6 测试

于 2019-08-26T10:52:55.927 回答
0

我最终找到了一种可能的方法来做到这一点,但我没有使用它或实施它。当 url 无效时,我将使用 DomainValidator ( source ) 将其放入另一个检查中。我计划使用 updateTLDOverride 方法,但他们在 v 1.5.0 中有一个错误,其中方法调用的参数使用私有或受保护的变量。这已在 1.5.1 中修复,但我使用的是 Maven,并且 repo 仅适用于验证器的 1.5.0 版本。

于 2016-03-17T14:37:46.460 回答