Bit of tinkering. The only way I can make this work in .Net is to throw away the anchors (^, $) and, as discussed above, set a range on the repeat interval for the leading digits.
If the ID can contain mixed case alphabetic characters then the simplest way to handle that is to set the ignoreCase flag on match.
string pattern = @"\d{1,3}\/[A-Z]{3,8}\/\d{3,5}";
string data =
@"01/FRAME/001
02/SYNC/999
99/WIDGET/123
AE/THISISTOOLONG/111
13/match/123
1/noMatch/01
12/SYNC/1112";
Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
MatchCollection matches = r.Matches(data);
foreach (Match m in matches) {
Console.WriteLine(m.Value);
}
All but AE/THISISTOOLONG/111 and 1/noMatch/01 are returned.