正则表达式在括号和方括号之间获取ip

时间:2015-01-15 05:39:30

标签: javascript regex

我有点陷入正则表达式。

我需要获取支架和方括号之间的IP地址。 这将获得IP。

([0-9]{1,3}[\.]){3}[0-9]{1,3}

但如果我这样做,我也会得到括号。

\(\[([0-9]{1,3}[\.]){3}[0-9]{1,3}\]\)

我尝试使用前瞻,但它不起作用(我很确定它是语法错误,但我不知道如何修复它。)

\(\[(?=[([0-9]{1,3}[\.]){3}[0-9]{1,3})

这必须在Javascript中使用。

2 个答案:

答案 0 :(得分:0)

你需要使用外观。

(?<=\(\[)(?:[0-9]{1,3}\.){3}[0-9]{1,3}(?=\]\))

DEMO

由于javascript不支持look-behinds,我们唯一的选择是capturing groups并打印索引1以获取ip-addresses。

\(\[((?:[0-9]{1,3}\.){3}[0-9]{1,3})\]\)

DEMO

在javascript中,它就像

> var str = "foo ([122.122.122.122]) bar"
undefined
> console.log(/\(\[((?:[0-9]{1,3}\.){3}[0-9]{1,3})\]\)/.exec(str)[1]);
122.122.122.122

如果输入包含多个地址,请使用此

> var str = "foo ([122.122.122.122]) bar foo ([122.122.122.122]) bar"
undefined
> var re = /\(\[((?:[0-9]{1,3}\.){3}[0-9]{1,3})\]\)/g;
undefined
> var m;
undefined
> while ((m = re.exec(str)) != null) {
... console.log(m[1]);
... }
122.122.122.122
122.122.122.122

答案 1 :(得分:0)

/([((?:\。d {1,3}){3} \ d {1,3})])/克

link to graphical description of this regular expression