vmiklos.hu
shameless self-promoting website
»Root
»Rejourn root
Posted Saturday, 26 April 2008 by Miklos
Tags: en hacking

a few days ago i wanted to use ungreedy regexs in javascript. first, let's see what an ungreedy regex is. look at the following example:

>>> "

foo

bar

".replace(/

f.*<\/p>/, '') ""

this is greedy. you want to get something like:

"

bar

"

right?

that would be ungreedy. in some other languages, there is a flag for this (php has 'U'), but in javascript, you need an other trick:

>>> "

foo

bar

".replace(/

f.*?<\/p>/, '') "

bar

"

and yes, that's what we wanted. also it works for .+?, and so on.

ah and as a side note, it seems '.' does not match newlines, so you'll have to work around it like:

>>> "

foo\nbar

baz

".replace(/

f[\s\S]*?<\/p>/, '') "

baz

"

Comments