Try
(?:slug=([a-zA-Z0-9]+)&)?(?:slug=([a-zA-Z0-9]+)&)?(?:slug=([a-zA-Z0-9]+)&)?(?:slug=([a-zA-Z0-9]+))?id=(\d+)+
Repeating the pattern is somewhat ugly, but I'm just not smart enough to find another expression.
The ?: in
(?:slug=([a-zA-Z0-9]+)&)
tells the processor not to capture the match.
This also achieves what you were asking for: the ID is always in C:5.
I tried this in my IIS 7.5 and it works, except if there is just one slug - in that case, this slug is captured into C:3. I have no idea why. Other regex testers (like http://regex101.com/#pcre) capture correctly.
I'll think about it, but if this takes too long or I don't come up with a solution, you can always add multiple rewrite rules (in this case, add an extra rule for one slug).
This is how it looks in IIS: