pattern static method
Gets a validator that requires the control's value to match a regex pattern.
The argument pattern must not be null.
The argument validationMessage
is optional and specify the key text for
the validation error. I none value is supplied then the default value is
ValidationMessage.pattern.
Example:
Using an instance of RegExp as argument.
const AmericanExpressPattern = r'^3[47][0-9]{13}$';
final cardNumber = FormControl(
value: '342654321654213',
validators: [Validators.pattern(RegExp(AmericanExpressPattern))],
);
expect(cardNumber.valid, true);
Example:
Using a String as argument.
const AmericanExpressPattern = r'^3[47][0-9]{13}$';
final cardNumber = FormControl(
value: '342654321654213',
validators: [Validators.pattern(AmericanExpressPattern)],
);
expect(cardNumber.valid, true);
Example:
Specifying a custom validation message.
const containsLettersPattern = r'[a-z]+';
const containsNumbersPattern = r'\d+';
const containsLettersValidationMessage = "containsLetters";
const containsNumbersValidationMessage = "containsNumbers";
final password = FormControl(
value: '123abc',
validators: [
Validators.pattern(
containsLettersPattern,
validationMessage: containsLettersValidationMessage,
),
Validators.pattern(
containsNumbersPattern,
validationMessage: containsNumbersValidationMessage,
),
],
);
expect(password.valid, true);
Implementation
static ValidatorFunction pattern(
Pattern pattern, {
String validationMessage = ValidationMessage.pattern,
}) {
PatternEvaluator evaluator;
if (pattern is String) {
evaluator = RegExpPatternEvaluator(RegExp(pattern));
} else if (pattern is RegExp) {
evaluator = RegExpPatternEvaluator(pattern);
} else {
evaluator = DefaultPatternEvaluator(pattern);
}
return PatternValidator(evaluator, validationMessage: validationMessage)
.validate;
}