如何在javascript中从字符串变量中提取ip地址

如何在javascript中从字符串变量中提取ip地址,javascript,Javascript,我已经用javascript编写了下面的代码 function reg() { var a="ec2-54-234-174-228.compute-1.amazonaws.com"; var r = a.match(/\-[0-9]*/g); alert(r); } 我得到的输出像-54,-234,-174,-228,-1但是 我只需要从变量a中提取54-234-174-228IP地址 试试这个: function reg() { var a="ec2-54-2

我已经用javascript编写了下面的代码

function reg()
{
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var r = a.match(/\-[0-9]*/g);
    alert(r);
}
我得到的输出像
-54,-234,-174,-228,-1
但是 我只需要从变量a中提取
54-234-174-228
IP地址

试试这个:

function reg()
{
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var r = a.match(/\-[0-9-]*/g);
    alert(r[0].substring(1,r[0].length));
}
a.match(/\-[0-9-]*/g)
将返回
[-54-234-174-228,-1]
。获取第一个元素并从一开始就删除
-
,您将获得您的IP。您还可以添加以下内容:

alert(r[0].substring(1,r[0].length).replace(/-/g, '.'));
要以IP形状返回它:
54.234.174.228

请尝试以下操作:

function reg()
{
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var r = a.match(/\-[0-9-]*/g);
    alert(r[0].substring(1,r[0].length));
}
a.match(/\-[0-9-]*/g)
将返回
[-54-234-174-228,-1]
。获取第一个元素并从一开始就删除
-
,您将获得您的IP。您还可以添加以下内容:

alert(r[0].substring(1,r[0].length).replace(/-/g, '.'));

要以IP形式返回它:
54.234.174.228

请尝试以下正则表达式:
/[0-9]{1,3}(-0-9]{1,3}{3}(?=\)/


它匹配一系列由1到3位数字组成的4个数字,这些数字之间用-,后面必须跟一个点。

请尝试以下正则表达式:
/[0-9]{1,3}(-0-9]{1,3}{3}(?=\)/

它匹配一系列由1到3位数字组成的4个数字,数字之间用-分隔,后面必须跟一个点。

首先获取“的索引”,然后切片

function reg()
{
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var r = a.indexOf(".");
    alert(a.slice(0,r));
}
首先获取“”的索引,然后切片

function reg()
{
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var r = a.indexOf(".");
    alert(a.slice(0,r));
}

在您的情况下,您可以简单地使用以下模式:

var r = a.match(/([^a-z][0-9]+\-[0-9]+\-[0-9]+\-[0-9]+)/g);

在您的情况下,您可以简单地使用以下模式:

var r = a.match(/([^a-z][0-9]+\-[0-9]+\-[0-9]+\-[0-9]+)/g);
你可以使用这个正则表达式

"(\\d{2}-\\d{3}-\\d{3}-\\d{3})+"
你可以使用这个正则表达式

"(\\d{2}-\\d{3}-\\d{3}-\\d{3})+"
还有一个例子:

function reg() {
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var re = /-(\d+)/ig
    var arr = [];
    while(digit = re.exec(a)) arr.push(digit[1]);
    arr = arr.slice(0,4);

    alert(arr)
}
还有一个例子:

function reg() {
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var re = /-(\d+)/ig
    var arr = [];
    while(digit = re.exec(a)) arr.push(digit[1]);
    arr = arr.slice(0,4);

    alert(arr)
}

match返回一个数组,alwaysTry
alert(r[0]+'-'+r[1]+'-'+r[2]+'-'+r[3])
。如果amazon稍后更改了主机名命名策略,并且不再包括IP地址的编号,则主机名提取不起作用。例如,将来可能是hello-xaby.compute-1.amazonaws.com。不要尝试使用字符串操作从主机名中提取IP。相反,请执行DNS查找。我的输出是错误的,因为它还包含-1,这对我来说是不必要的。任何人都可以为此编写代码吗?match会返回一个数组,alwaysTry
警报(r[0]+'-'+r[1]+'-'+r[2]+'-'+r[3])
。如果amazon稍后更改了主机名命名策略,并且不再包含IP地址的数字,则主机名提取将不起作用。例如,将来可能是hello-xaby.compute-1.amazonaws.com。不要尝试使用字符串操作从主机名中提取IP。相反,请执行DNS查找。我的输出是错误的,因为它还包含-1,这对我来说是不必要的。请任何人都能为此编写代码吗?别忘了IP地址在反向记录中是反向的。在这种情况下,与反向记录关联的IP将为228.174.234.54。不要忘记IP地址在反向记录中是反向的。在这种情况下,与反向记录关联的IP在警报中为228.174.234.54,将其更改为Array.prototype.slice.call(a.slice(0,r).split('-'),1).join('-')在警报中,将其更改为Array.prototype.slice.call(a.slice(0,r).split('-'),1).join('-'))