是否有一个验证URN的java库?

时间:2011-03-30 21:50:45

标签: java

验证字符串是否为有效URN

的最简单方法是什么?

修改使用URI不是正确的解决方案!允许URI包含URN不能的所有内容,例如&

4 个答案:

答案 0 :(得分:8)

如果您只需要验证它,则可以使用正则表达式。以下内容仅匹配符合RFC2141的URN:

import java.util.regex.Pattern;

public class UrnTest {
    public final static Pattern URN_PATTERN = Pattern.compile(
        "^urn:[a-z0-9][a-z0-9-]{0,31}:([a-z0-9()+,\\-.:=@;$_!*']|%[0-9a-f]{2})+$",
        Pattern.CASE_INSENSITIVE);


    public static void main(String[] args) throws Exception {
        for(String urn : args) {
            boolean isUrn = URN_PATTERN.matcher(urn).matches();
            System.out.println(urn+"  :  "+(isUrn ? "valid" : "not valid"));
        }
    }
}

答案 1 :(得分:2)

您可以尝试jcabi-urn及其类com.jcabi.urn.URN

答案 2 :(得分:2)

我最近发布了differences。它实现了一个表示统一资源名称(URN)的类。它还根据urnlib中定义的约束实现解析和序列化。

它在Maven Central上发布,旨在充当网络标识符处理库,就像本机Java URL和URI类一样。

答案 3 :(得分:0)