C#で16進数の文字列かどうかの正規表現の書き方

16進数で使用される文字の範囲を指定する

16進数の文字列は「0~9、a~f、A~F」のみで構成されます。その場合はこのような書き方になります。

using System.Text.RegularExpressions;

private readonly Regex RegHex = new Regex("^[0-9a-fA-F]+$");

大文字小文字を区別しないオプションを付ける

または「大文字小文字を区別しない(RegexOptions.IgnoreCase)」というオプションをつけて、以下のようにも書けます。

private readonly Regex RegHex = new Regex("^[0-9a-f]+$", RegexOptions.IgnoreCase);

オプションを複数指定する

RegexOptionsはFlags属性がついていますので、複数指定する場合はビット演算の形で指定します。
以下は複数のオプションを指定した例です。2つの値を「|」で繋いでいます。

private readonly Regex RegHex = new Regex("^[0-9a-f]+$", RegexOptions.IgnoreCase | RegexOptions.Compiled);

Flags属性についてはこちら→FlagsAttribute クラス (System) | Microsoft Docs