В строках C # символ обратной косой черты (\
) имеет особое значение: это escape-символ. Вам нужно использовать двойную обратную косую черту, чтобы убрать особое значение:
"^(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|25[0-5]|2[0-4]\\d)$"
Или используйте дословный строковый литерал, добавив к нему префикс @, где обратный слеш не имеет особого значения:
@"^(([01]?\d\d?|2[0-4]\d|25[0-5])\.){3}([01]?\d\d?|25[0-5]|2[0-4]\d)$"
В дословных строках необходимо экранировать только двойные кавычки ("
) (опять же, используя пару ""
), поскольку они используются для разделения строки.