I am attempting to perform the following rewrite:

mydomain.com/?p=706&preview=true to
mydomain.com/index.php?p=706&preview=true

using RewriteRule ^/?p=([0-9]+)&preview=true$ /index\.php [QSA,L]

However it doesn't redirect, what shall we be held doing wrong?

Remove /:

RewriteRule ^/?p=([0-9]+)&preview=true$ /index\.php [QSA,L]
            ^^^

so...

RewriteRule ^?p=([0-9]+)&preview=true$ /index\.php [QSA,L]

Change it with:

RewriteCond % ^(p=([-9]+)&preview=true) RewriteRule ^$ /index.php?%1 [L]