JavaScript - Regex - Grab only matched pattern if there are multiple matches in a single line -


i'm trying read contents of css file , looking links external files. figured faster write quick regular expression me, proving frustrating.

say have:

@font-face{font-family:'fontawesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') 

that line goes on more, lets take now.

as can see, there both src:url(...) , url(...) figured url(..) occurrences.

here's tried: take 1:

var contents.match = ... // contents of .min.css file. var matches = contents.match(/url\s*(.*);/g); 

take 2:

var contents.match = ... // contents of .min.css file. var matches = contents.match(/url\s*(.*);/);    //no g @ end. 

take 3:

var contents.match = ... // contents of .min.css file. var matches = contents.match(/url\s*\((.*)\);/g); 

take 4:

var contents.match = ... // contents of .min.css file. var matches = contents.match(/url\s*\((.*)\);/);    // no g @ end. 

all want array of matches, either string between () or whole match, i.e. url(...); instead massive pipe out of entire file.

what want:

console.log(matches);    /// prints ['fonts/font_1.css', 'fonts/font_2.css', 'fonts/font_3.css'] 

of

console.log(matches);    /// prints ["url(fonts/font_1.css')", "url('fonts/font_2.css')", "url('fonts/font_3.css')"] 

where missing something?

the .* problem because it's going match closing parens too.

try this: /url\s*\([^)]*\)/g


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -