pattern static method

ValidatorFunction pattern(
  1. Pattern pattern, {
  2. String validationMessage = ValidationMessage.pattern,
})

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;
}