Wyrażenia regularne w C # do sprawdzania poprawności nazwy pliku

Jakie jest dobre wyrażenie regularne, które może zweryfikować ciąg tekstowy, aby upewnić się, że jest to prawidłowa nazwa pliku systemu Windows? (AKA nie ma\/:*?"<>|&nbsp;postacie).

Chciałbym to wykorzystać w następujący sposób:

// Return true if string is invalid.
if (Regex.IsMatch(szFileName, "<your regex string>"))
{
    // Tell user to reformat their filename.
}