AngularJs ng-pattern regex

11,182

I suggest defining a pattern to match valid inputs, like

ng-pattern="/^@[a-zA-Z0-9]+(?:,\s*@[a-zA-Z0-9]+)*$/"

See the regex demo

If you want to disallow leading and trailing whitespace, add ng-trim="false".

Pattern details:

  • ^ - start of string
  • @ - a literal @ symbol
  • [a-zA-Z0-9]+ - 1+ alphanumerics
  • (?:,\s*@[a-zA-Z0-9]+)* - 0+ sequences of:
    • , - comma
    • \s* - 0+ whitespaces
    • @[a-zA-Z0-9]+ - same as above
  • $ - end of string.
Share:
11,182
Steven.lin
Author by

Steven.lin

Updated on June 29, 2022

Comments

  • Steven.lin
    Steven.lin almost 2 years

    I am struggling writing a Regex for angular ng-pattern to validate a form input field.An example of the possible inputs are below

    Valid input:

    @tag1,@tag2,@tag3
    @tag1, @tag2, @tag3
    @tag1
    

    Invalid Input:

    @tag 1
    @tag 1, @tag2, @tag  -3
    @ta g1, @t ag2
    

    Basically it should allow comma and comma whitespace, but not allow whitespace in between tags.

    I have written a REGEX that matches all the invalid input, but when I use this in ng-pattern it does not do the correct validation.

    Regex Built: /((^, @|@\s+)|@*[a-zA-Z0-9]* +[a-zA-Z0-9])/g Link: https://regex101.com/r/HMVdLD/1

    Any help is much appreciated!