正则表达式 - 从捕获组中提取数字

时间:2014-09-05 06:17:18

标签: javascript regex

给出以下字符串

WIDTH: 700px; HEIGHT: 467px

我如何从中提取数字?我只匹配WIDTH:700px;通过以下测试:

/(WIDTH.+;)/

预期产量应为700

3 个答案:

答案 0 :(得分:2)

按原样匹配WIDTH,然后使用\s*来计算空白字符,然后是:,然后是空白字符,最后是数字系列。

var data = "WIDTH: 700px; HEIGHT: 467px";
console.log(/WIDTH\s*:\s*(\d+)/.exec(data)[1]);
// 700

您的RegEx与整个WIDTH: 700px匹配,因为您使用.+;,这意味着匹配任何字符,一次或多次,直到;

答案 1 :(得分:1)

您可以尝试以下正则表达式并从组索引1获取宽度值,     WIDTH?:\ S *(\ d +)PX;

代码:

> var re = /WIDTH:\s*(\d+)px;?/g;
undefined
> var str = "WIDTH: 700px; HEIGHT: 467px"
undefined
> var m;
undefined
> while ((m = re.exec(str)) != null) {
... console.log(m[1]);
... }
700

您也可以尝试拆分,

> "WIDTH: 700px; HEIGHT: 467px".split(/WIDTH:\s*|px/g)[1];
'700'

答案 2 :(得分:1)

(?=WIDTH.*?;).*?(\d+)

试试这个。见演示。

http://regex101.com/r/sB4kE6/1