If a requirement comes your way to programmatically update the validators that are present on your Episerver Forms element(s), the snippets below will help!
Validators are registered in a slightly peculiarly way – it’s a single string property, which contains a delimited list of the validator type names:

The delimiter does have a strongly-typed constant to represent it – which is found here:
EPiServer.Forms.Constants.RecordSeparator
In addition, validator error messages are represented by a list of Key/Value pairs – the key being the validator type name, and the value being the error message.
Method to update a form element’s validator
public void ApplyValidatorToFormElement<T>(InputElementBlockBase formElement, string errorMessage= "", string extra= "")
where T : ElementValidatorBase
{
var formElementWritable = formElement.CreateWritableClone() as InputElementBlockBase;
var formElementValidators = formElementWritable.Validators ?? string.Empty;
var validators = new string[]
{
typeof(T).FullName + extra,
formElementValidators
};
if (!string.IsNullOrEmpty(errorMessage))
{
// Strip out any existing validator messages of this type first
var newValidatorMessages = formElementWritable.ValidatorMessages.Where(x => x.Validator != typeof(T).FullName)
.ToList();
newValidatorMessages.Add(new ValidatorMessage
{
Validator = typeof(T).FullName,
Message = errorMessage
});
formElementWritable.ValidatorMessages = newValidatorMessages;
}
formElementWritable.Validators = string.Join(EPiServer.Forms.Constants.RecordSeparator, validators);
contentRepository.Save((IContent)formElementWritable, SaveAction.Publish, AccessLevel.NoAccess);
}
Example
ApplyValidatorToFormElement<RequiredValidator>(formElement, "This field is required");
Regular Expressions
These are slightly more funky – as the Regex pattern is embedded into the validator name with a delimiter. The below method can help achieve this:
public void ApplyRegularExpressionValidatorToFormElement(InputElementBlockBase formElement, Regex regularExpression, string errorMessage)
{
var regexFormat = $"##{regularExpression.ToString()}###{regularExpression.ToString()}";
ApplyValidatorToFormElement<RegularExpressionValidator>(formElement, errorMessage, regexFormat);
}
Example
ApplyRegularExpressionValidatorToFormElement(formElementBlock, new Regex("^[a-zA-Z0-9 '-]+$"), "Text fields can only consist of letters or numbers");
Happy coding!