0

我用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但我只需54-234-174-228要从变量 a 中提取 IP 地址。

4

7 回答 7

2

试试这个:

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

于 2013-09-03T09:39:17.603 回答
2

试试这个正则表达式:/[0-9]{1,3}(-[0-9]{1,3}){3}(?=\.)/

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

于 2013-09-03T09:39:32.900 回答
1

获取第一个“.”的索引 然后切片

function reg()
{
    var a="ec2-54-234-174-228.compute-1.amazonaws.com";
    var r = a.indexOf(".");
    alert(a.slice(0,r));
}
于 2013-09-03T09:40:08.443 回答
1
"ec2-54-234-174-228.compute-1.amazonaws.com".split('.')[0].split('-').slice(1,5).join('.')
于 2013-09-03T09:45:20.980 回答
0

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

var r = a.match(/([^a-z][0-9]+\-[0-9]+\-[0-9]+\-[0-9]+)/g);
于 2013-09-03T09:42:46.673 回答
0

你可以使用这个正则表达式

"(\\d{2}-\\d{3}-\\d{3}-\\d{3})+"
于 2013-09-03T09:46:48.510 回答
0

再举一个例子:

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)
}
于 2013-09-03T09:59:36.390 回答