JS验证IP:端口

时间:2014-01-11 09:25:22

标签: javascript jquery regex validation

我有一个问题,关于如何验证IP:端口在一起。 例如:

192.158.2.10:80< - 有效

192.158.2.10< ---无效

所以端口是必须的,我发现了一些IP验证(正则表达式),但要与端口合并没有运气。我不想为端口使用单独的输入字段。

我的想法是这样的:

var str = '192.168.10.2:80';
var substr = ':';
     if (str.indexOf(substr) !== -1){
         var pieces = str.split(':', 2);
         var ip    = pieces[0];
         var port  = pieces[1];
         //and here validate ip and port
     }else{
         console.log('the char '+substr+' is not there');
     }

这是对的吗?还是更简单?

5 个答案:

答案 0 :(得分:10)

为了验证数字是否在可接受的范围内,正则表达式必须非常长。相反,我会用这个:

function validateIpAndPort(input) {
    var parts = input.split(":");
    var ip = parts[0].split(".");
    var port = parts[1];
    return validateNum(port, 1, 65535) &&
        ip.length == 4 &&
        ip.every(function (segment) {
            return validateNum(segment, 0, 255);
        });
}

function validateNum(input, min, max) {
    var num = +input;
    return num >= min && num <= max && input === num.toString();
}

演示jsfiddle.net/eH2e5

答案 1 :(得分:1)

您只需使用此Regex即可验证 IP:端口

/ ^(:( ?: 25 [0-5] | 2 [0-4] [0-9] |?[01] [0-9] [0-9])。){3- }(?: 25 [0-5] | 2 [0-4] [0-9] | [01] [0-9] [0-9]):[0-9] {1,5} $ /

答案 2 :(得分:0)

我认为'[0-9]+.[0-9]+.[0-9]+.[0-9]+:[0-9]+'也可以正常使用

您可以在http://regex101.com/

进行测试

答案 3 :(得分:0)

也许这可行。它在我的初步测试中做到了

var id = '192.158.2.10:80'; // passes - true
// var id = '192.158.2.10'; // fails - false

/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}\:[0-9]{1,3}$/.test(id);

答案 4 :(得分:0)

此方法explained here使用更完整的正则表达式:

[*]:

Error: more than one instance of overloaded function "fabs" matches the argument list:
        function "fabs(double _X)"
        function "fabs(float _X)"
        function "fabs(long double _X)"
        argument types are: (int)