I am trying to understand the following regex, I understand the initial part but I\'m not able to figure out what {3,19} is doing here:
/[A-Z][A-Za-z0-9\\s]{
what does comma separated numbers in curly brace at the end of regex means
It denotes Quantifier with the range specified in curly brace.
curly brace analogues to function with arguments. Where we can specify single integer or two integers which acts as a range between the two numbers.
/[A-Z][A-Za-z0-9\s]{3,19}$/
Using online regex websites we can get understand as follows:
https://regex101.com/
That is the custom repetition operation known as the Quantifier.
\d{3}
will find exactly three digits.
[a-c]{1,3}
will find any occurrance of a, b, or c at least one time, but up to three times.
\w{0,1}
means a word character will be optionally found. This is the same as placing a Question Mark, e.g.: \w?
(\d\w){1,}
will find any combination of a Digit followed by a Word Character at least One time, but up to infinite times. So it would match 1k1k2k4k1k5j2j9k4h1k5k
This is the same as a Plus symbol, e.g.: (\d\w)+
b{0,}\d
will optionally find the letter b
followed by a digit, but could also match infinite letter b
's followed by a digit. So it will match 5
, b5
, or even bbbbbbb5
. This is the same as an Asterisk. e.g.: b*\d
Quantifiers
It will have to match [A-Za-z0-9\s] between 3 and 19 times.
Here's a good regex reference guide:
http://www.regular-expressions.info/reference.html
{n,m}
means "repeat the previous element at least n
times and at most m
times", so the expression
[A-Za-z0-9\s]{3,19}
means "match between 3 and 19 characters that are letters, digits, or whitespace". Note that repetition is greedy by default, so this will try to match as many characters as possible within that range (this doesn't come into play here, since the end of line anchor makes it so that there is really only one possibility for each match).
The regular expression you have there /[A-Z][A-Za-z0-9\s]{3,19}$/
breaks up to mean this:
[A-Z]
We are looking for a Capital letter
Followed by
[A-Za-z0-9\s]{3,19}
a series of letters, digits, or white space that is between 3 and 19 characters
$
Then the end of the line.
They are 'quantifiers' - it means 'match previous pattern between 3 and 19 times'
When you are learning regular expressions, it's really use to play with them in an interactive tool which can highlight the matches. I've always liked a tool called Regex Coach, but it is Windows only. Plenty of online tools though - have a play with your regex here, for example.