javascript - JS验证IP :Port

标签 javascript jquery regex validation

我有一个问题,关于如何一起验证 IP:Port。 示例:

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');
     }

这是正确的方法吗?还是有更简单的?

最佳答案

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

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

关于javascript - JS验证IP :Port,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21060645/

相关文章:

javascript - 使用 Dynamics 为选项卡着色

javascript - 我怎样才能使脚本工作?

javascript - HTML contenteditable 元素上的 onkeyup 事件返回未定义

JQuery.ajax 适用于除 IE 之外的所有平台

javascript - jQuery ajax() 上的多维数组 [key] 表示法失败

javascript - 这是否可以强制执行所有元素的 .click() ,甚至是下面的元素?

javascript - 正则表达式用逗号分隔,除非在字符串或列表 `[]` 内

javascript - Ace 编辑器 + jQueryUI 选项卡杀死了我的浏览器

javascript - 以字符串形式正则表达式获取最大数字

regex - 匹配字符串中的引号,但前提是达到最小字符长度