The if controller is removed from the parent's controller iter list once it evaluates once to false because isDone() now returns true and the GenController removes it. This causes a problem if you want a test run to react based on a regex based variable in a loop controller. Basically once the controller evaluates to false once it is no longer evaluated.
Known bug. Already fixed in CVS.
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/1452