Q:

Permitir caracteres especial como @#%&-+()/*"':;!?|~{}[]_ en password

¿Que expresión regular puedo usar para permitir caracteres como estos @#%&-+()/*"':;!?~|{}[]_ en php?

A:

Con esta expresión regular te obliga a:
La contraseña debe tener al entre 8 y 16 caracteres, al menos un dígito, al menos una minúscula, al menos una mayúscula y al menos un caracter no alfanumérico.
^(?=.*\d)(?=.*[\u0021-\u002b\u003c-\u0040])(?=.*[A-Z])(?=.*[a-z])\S{8,16}$

el código en PHP
if (preg_match('/^(?=.*\d)(?=.*[\u0021-\u002b\u003c-\u0040])(?=.*[A-Z])(?=.*[a-z])\S{8,16}$/', $cadenaok))
{
    return true;
}

