JSvalidationIP:端口

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

192.158.2.10:80 < – 有效

192.158.2.10 <—无效

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

我的想法是这样的:

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

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

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

 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

您只需使用此正则表达式validationIP:仅限端口

/ ^(:( ?: 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} $ /

我认为'[0-9]+.[0-9]+.[0-9]+.[0-9]+:[0-9]+'可能也有效

您可以在http://regex101.com/上进行测试

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

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

这里解释的方法使用更完整的正则表达式: