Java 中的 Sip URI 验证

我有以下代码来验证 sip:uri 格式字符串:


private final static Pattern SIP_URI_PATTERN = Pattern.compile("^(sip(?:s)?):(?:[^:]*(?::[^@]*)?@)?([^:@]*)(?::([0-9]*))?$", Pattern.CASE_INSENSITIVE);


public static boolean isValidURI(String address){

    if(address == null)

        return false;


    return address != null && address.length() <= 65 && SIP_URI_PATTERN.matcher(address).matches();

}

我不是专家,所以我想我在这里错过了一些东西,当我提交这个字符串时,它返回true:


sip:4563214567@example.com


sip:4563214567@XX.XX.XX.XX -> XX = IP 地址


当我提交此字符串时,它也返回 true,但由于缺少@应该返回 false:


sip:4563214567example.com


任何的想法?


忽然笑
浏览 247回答 1
1回答

慕工程0101907

我认为以这种方式检查有效的 IP 地址或域更方便。sip:[0-9]*@((\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4}\b)|((([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\.[a-zA-Z]{2,3})))演示在 Java 形式中,private final static Pattern SIP_URI_PATTERN =&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Pattern.compile("sip:[0-9]*@((\\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\\.|$)){4}\\b)|((([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{1,61}[a-zA-Z0-9]))\\.([a-zA-Z]{2,6}|[a-zA-Z0-9-]{2,30}\\.[a-zA-Z]{2,3})))",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Pattern.CASE_INSENSITIVE);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java