验证字符串是否为有效URN?
的最简单方法是什么? 修改使用URI不是正确的解决方案!允许URI包含URN不能的所有内容,例如&
答案 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)
我最近发布了。它实现了一个表示统一资源名称(URN)的类。它还根据urnlib中定义的约束实现解析和序列化。
它在Maven Central上发布,旨在充当网络标识符处理库,就像本机Java URL和URI类一样。
答案 3 :(得分:0)