2014-09-05 4 views
-1

Учитывая следующую строкуRegex - извлечение числа из группы захвата

WIDTH: 700px; HEIGHT: 467px 

Как бы я просто извлечь номера от него? Я подобрал только WIDTH: 700px; со следующим испытанием:

/(WIDTH.+;)/ 

Ожидаемый результат должен быть только 700

+0

только цифры могут прийти (\ d +) – vks

+0

Это не будет работать, как мне нужно, чтобы захватить первую ширину и номера с ним. Это для встроенного стиля, а высота и ширина могут быть взаимозаменяемы. – user1027217

+0

(ШИРИНА: \ s * (\ d +);)? – vks

ответ

2

Match WIDTH, как это и затем использовать \s* для учета пробельных символов, а затем :, а затем снова пробельные символы и, наконец, серия цифр.

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

Ваш RegEx соответствует всей WIDTH: 700px, потому что вы используете .+;, что означает любой символ, один или несколько раз, пока ;.

+0

@ C-linkNepal Но [он говорит] (http://stackoverflow.com/questions/25679664/regex-extract-numbers-from-capture-group/25679728#comment40133300_25679664), только 700 ... – thefourtheye

+0

Да - ни один из них не возвращает только 700 – user1027217

+0

@ user1027217 Код, который я опубликовал, был протестирован на моей машине. Пожалуйста, дайте мне знать, как вы это подтвердили. – thefourtheye

1

Вы можете попробовать следующее регулярное выражение и получить значение ширины из индекса группы 1, ШИРИНА: \ 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' 
Смежные вопросы