2016-07-15 3 views
1

У меня есть строка как .hello-world-chat-size {height: 350px !important;}, и я хочу извлечь значение атрибута height i.e 350. Я пробовал это регулярное выражение /^height\:(.*)$/gm, но не могу получить никакого результата.Regex: получить значение высоты из строки в JavaScript

+0

Поскольку '^' соответствует началу строки, а '$' соответствует концу строки. Вы можете просто использовать '/ height: \ s * (\ d +) px /' или что-то подобное. –

+1

из любопытства, если вы хотите атрибут элемента, почему бы просто не захватить это вместо регулярного выражения? (offsetHeight или clientHeight http://stackoverflow.com/questions/15615552/get-div-height-with-plain-javascript) – Nikki9696

+1

@ Nikki9696 Я извлек эту строку, используя 'getElementsByTagName(). innerHTML', так что это строка – iamsaksham

ответ

1

Проблема возникает из-за того, что ^ соответствует началу строки и $ соответствует концу строки. Фактически, (.*)$ соответствует всей остальной части линии, но так как начало шаблона не совпало, совпадения не было. Вы можете просто использовать

/height:\s*(\d+)px/ 

или

/height:\s*(\d+)/ 

Смотрите regex demo

Детали:

  • height: - буквальное подстроку height:
  • \s* - ноль или более пробельных символов
  • (\d+) - 1 или более цифр
  • px - это символьная строка px (на самом деле, он является излишним, но только в том случае, если вы могли бы иметь другое значение без px, вы можете сохранить его чтобы быть столь же явно, как может быть)

JS демо:

var re = /height:\s*(\d+)px/; 
 
var str = '.hello-world-chat-size {height: 350px !important;}'; 
 
var m = str.match(re); 
 
if (m) { 
 
    console.log(m[1]); 
 
}

+1

Это работает ....... – iamsaksham

+0

что насчет '.equal-height-div {width: 123px;}'? –

+0

Это немного отличается, что вы хотите извлечь из него? '123'? Будет просто '/ width: (\ d +) /'. Добавьте больше контекста для более безопасного соответствия. Скажем, вы можете добавить '{': '/ {width: (\ d +) /'. Или если могут быть пробелы: '/ {\ s * width \ s *: \ s * (\ d +) /' –

Смежные вопросы