我有以下代码来验证 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
有什么想法吗?
最佳答案
我认为通过这种方式检查有效的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 =
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})))",
Pattern.CASE_INSENSITIVE);
关于java - Java 中的 Sip URI 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51895520/