First rewrite doesn't match because regex is wrong. The URL your rewrite should match is something like this:
so your regex should first match the first / character. Then, don;t confuse alternation with a character class. If you want express an alternation you need a group, it means rounded brackets instead of square brackets.
Last but not least, the second rewrite doesn't match the first / too, I suppose it worked because even if the slash is doubled the PHP code, in some way, will handle it. Honestly, after all I had no time to test my suggestion, but please try with this:
RewriteRule ^/(css|js|fonts)(/.*)?$ /static$2 [L]
RewriteRule ^/(.*)$ /index.php/$1 [L]