Есть 3 вещи, которые необходимо изменить:
Необходимо экранировать символ $, поскольку он обозначает конец строки.
\$
Нужно настроить шаблон регулярного выражения, чтобы он соответствовал всей строке, а не частям.
^(\$[0-9a-fA-F]{2},+)+\$[0-9a-fA-F]{2}$
Необходимо изменить код для использования Regex.IsMatch.
string a = "$20,$30,$40";
if (Regex.IsMatch(a,@"^(\$[0-9a-fA-F]{2},+)+\$[0-9a-fA-F]{2}$",RegexOptions.IgnoreCase))
MessageBox.Show("A");
PS:
Если во входной строке есть пробел, такой как табуляция или пробел между ними, то это регулярное выражение нужно будет изменить.В таких случаях вы должны использовать «\ s» в правильных позициях.Например, если у вас есть пробелы вокруг запятых вроде
string a = "$20 ,$30, $40";
, вам нужно настроить свой RegEx следующим образом:
^(\$[0-9a-fA-F]{2}\s*,+\s*)+\$[0-9a-fA-F]{2}\s*$
Ссылки:
- C # Regex Testers
- о Regex.IsMatch (вместо использования Match)
- C # Шпаргалка регулярного выражения
Старый ответ ниже (игнорировать):
Попробуйте это:
"\$[0-9a-fA-F]{2}?[,]{0,1}"