I have a string like .hello-world-chat-size {height: 350px !important;} and I want to extract the value of height attribute i.e 350. I tried this regex /^height\:(.*)$/gm but cant get any result. 
            Asked
            
        
        
            Active
            
        
            Viewed 952 times
        
    1
            
            
        
        iamsaksham
        
- 2,879
 - 4
 - 26
 - 50
 
- 
                    Because `^` matches the start of string and `$` matches the end of string. You can just use `/height:\s*(\d+)px/`, or anything similar. – Wiktor Stribiżew Jul 15 '16 at 14:02
 - 
                    1out of curiosity, if you want an attribute of an element, why not just grab that instead of regex a string? (offsetHeight or clientHeight http://stackoverflow.com/questions/15615552/get-div-height-with-plain-javascript) – Nikki9696 Jul 15 '16 at 14:03
 - 
                    1@Nikki9696 I have extracted the above string using `getElementsByTagName().innerHTML` so it is a string – iamsaksham Jul 15 '16 at 14:05
 - 
                    1It's usually better to use the DOM if you can, and you do have the element in the DOM if you used getElementsByTagName. Just a suggestion. Happy Friday! =) "Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems." https://blog.codinghorror.com/regular-expressions-now-you-have-two-problems/ – Nikki9696 Jul 15 '16 at 14:11
 - 
                    Yah,, U are correct. I'll research getElementsByTagName a bit and will try to eliminate the regex. – iamsaksham Jul 15 '16 at 14:23
 
1 Answers
1
            The issue occurs because ^ matches the start of string and $ matches the end of string. Actually, (.*)$ matches the whole rest of the line, but since the beginning of the pattern did not match, there was no match at all. You can just use
/height:\s*(\d+)px/
or
/height:\s*(\d+)/
See the regex demo
Details:
height:- a literal substringheight:\s*- zero or more whitespace symbols(\d+)- 1 or more digitspx- a literal stringpx(actually, it is redundant, but just in case you might have other value withoutpx, you might keep it to be as explicit as can be)
JS demo:
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]);
}
        Wiktor Stribiżew
        
- 607,720
 - 39
 - 448
 - 563
 
- 
                    
 - 
                    That is a bit different, what do you want to extract from it? `123`? A mere `/width:(\d+)/` will do. Add more context for a safer match. Say, you can add `{`: `/{width:(\d+)/`. Or if there can be whitespaces: `/{\s*width\s*:\s*(\d+)/` – Wiktor Stribiżew Jul 15 '16 at 14:34