2

如何使用 Javascript 将我的 010.017.007.152 样式地址(便于数据库排序)转换为 10.17.7.152 以进行显示和超链接?

样品:010.064.214.210 010.064.000.150 010.064.017.001 127.000.0.001 10.0.00.000

非常感谢。

4

4 回答 4

7
function fix_ip(ip) { return ip.split(".").map(Number).join("."); }

JSFiddle(h/t @DavidThomas):http: //jsfiddle.net/davidThomas/c4EMy/

于 2013-09-21T22:36:56.877 回答
2

这是一个使用字符串操作和转换为整数的选项。与Billy Moon 的正则表达式解决方案相比,它看起来很难看,但有效:

var ip = "010.064.000.150".split('.').map(function(octet){
    return parseInt(octet, 10);
}).join('.');

或者,稍微清洁一点:

var ip = "010.064.000.150".split('.').map(function(octet){
    return +octet;
}).join('.');

Nirk 的解决方案使用了类似的方法,而且更短,查看一下。

于 2013-09-21T22:33:55.333 回答
2

使用正则表达式,您可以替换许多模式。像这样的东西可以工作......

var ip = "010.064.214.210"
var formatted = ip.replace(/(^|\.)0+(\d)/g, '$1$2')
console.log(formatted)

正则表达式用简单的英语...

/         # start regex
(^|\.)    # start of string, or a full stop, captured in first group referred to in replacement as $1
0+        # one or more 0s
(\d)      # any digit, captured in second group, referred to in replacement as $2
/g        # end regex, and flag as global replacement
于 2013-09-21T22:31:19.120 回答
1

您可以使用此代码:

    var ip = " 010.017.007.152";
    var numbers = ip.split(".");
    var finalIp = parseInt(numbers[0]);
    for(var i = 1; i < numbers.length; i++){
        finalIp += "."+parseInt(numbers[i]);
    }

    console.log(finalIp);
于 2013-09-21T22:35:31.383 回答