How to detect exact length in regex?
Showing comments 1 to 6 of total 6 on page 1 of 1
manfredRank: 278
I have two regular expressions that validate the values entered.
One that allows any length of Alpha-Numeric value @"^\s*(?[A-Z0-9]+)\s*"
and the other only allows numerical values @"^\s*(?[0-9]{10})"
How can I get a numerical string of the length of 11 not to be catched by the NUM regex
danielleRank: 147
Match something non-numeric after the length 10 string. My regex-foo isn't that good, but I think you've got it setup there to catch a numeric string of exactly length 10, but since you don't match anything after that, a length 11 string would also match. Try matching beyond the end of the number and you'll be good.
micoohRank: 98
You could try alternation?
"^\s*(?\d{1,10}|\d{12,})"
limcaboyRank: 70
If it's single line, you could specify that your match must happen at the end of the line, like this in .net ...
^\s*([0-9]{10})\z
That will accept 1234567890 but reject 12345678901.
gopalwinsRank: 219
This should match only 10 digits and allow arbitrary numbers of whitespaces before and after the digits.
Non-capturing version: (only matches, the matched digits are not stored)
^\s*(?:\d{10})\s*$
Capturing version: (the matched digits are available in subgroup 1, as $1 or \1)
^\s*\d{10}\s*$
samuelRank: 157
If you are trying to match only numbers that are 10 digits long, just add a trailing anchor using $, like this:
^\s*(?:[0-9]{10})\s*$
That will match any number that is exactly 10 digits long (with optional space on either side).