java - Java 中的 Sip URI 验证

标签 java regex validation sip

我有以下代码来验证 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})))

Demo

<小时/>

以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/

相关文章:

java - Java 中的连接正则表达式匹配标记

JavaScript 验证

java - 是否可以使用maven读取SVN中的最后修订版本号?

java - 如何从其他类中调用数据结构

java - LWJGL:根据鼠标位置旋转四边形

mysql - mysql 查询的正则表达式?

java - 如何允许我的复杂类型中存在任何类型的元素,不包括导入模式中的类型/元素

Python 2.7。使用正则表达式从字符串的某些部分提取数据

ruby-on-rails - 如何突出显示 Rails 验证错误的字段

javascript - Textarea 未在表单中得到验证