Angular 2 : Validators.pattern() not working

Pass pattern as string, without / which are the delimiters for regex

Validators.pattern('^[a-zA-Z]+$')

Remember to not do this:

Validators.pattern("[A-Z]{1,2}[0-9][0-9A-Z]?\s?[0-9][A-Z]{2}")

The gotcha is that you need a double backslash before the s to defeat string escape thus:

Validators.pattern("[A-Z]{1,2}[0-9][0-9A-Z]?\\s?[0-9][A-Z]{2}")

I had this same problem with a different pattern:

^\d{1,4}$

And I was using it like this:

Validators.pattern("^\d{1,4}$") // wrong

The problem is that the backslash \ has to be escaped, so the correct form is:

Validators.pattern("^\\d{1,4}$") // correct

Tags:

Angular