Я не думаю, что вы можете сделать это, используя схему JSON, но вы можете сделать это в коде, подключившись к процессу десериализации.Там вы убедитесь, что строка NameRegex является допустимым регулярным выражением, попытавшись создать из него объект Regex, и сгенерирует исключение, если оно недопустимо.
Для этого создайте метод проверки, который принимает StreamingContext в целевом классе, и украсьте его атрибутом [OnDeserialized].Напишите свой проверочный код в этом методе.Например:
public class Foo
{
public string NameRegex { get; set; }
[OnDeserialized]
internal void OnDeserializedMethod(StreamingContext context)
{
try
{
//ensure NameRegex is a valid regex
var r = new Regex(NameRegex);
}
catch
{
//throw whatever exception is appropriate for you
throw new InvalidDataException(
$"'{NameRegex}' is not a valid regular expression.");
}
}
}
Десериализация вызовет исключение, которое вы определили, если проверка не удалась:
var foo = JsonConvert.DeserializeObject(
@"{""NameRegex"":""abc+""}",
typeof(Foo));
**** Значение NameRegex '* abc +' не является допустимым регулярным выражением ****