Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Regex to match digits of specific length

Tags:

python

regex

I am looking to match a 15 digit number (as part of a larger regex string). Right now, I have

\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d 

but I feel like there must be a cleaner way to do this.

like image 881
MrGlass Avatar asked Jan 28 '11 04:01

MrGlass


People also ask

How do you restrict length in regex?

The ‹ ^ › and ‹ $ › anchors ensure that the regex matches the entire subject string; otherwise, it could match 10 characters within longer text. The ‹ [A-Z] › character class matches any single uppercase character from A to Z, and the interval quantifier ‹ {1,10} › repeats the character class from 1 to 10 times.

How does regex Match 5 digits?

match(/(\d{5})/g);

Which regex matches one or more digits?

Occurrence Indicators (or Repetition Operators): +: one or more ( 1+ ), e.g., [0-9]+ matches one or more digits such as '123' , '000' . *: zero or more ( 0+ ), e.g., [0-9]* matches zero or more digits. It accepts all those in [0-9]+ plus the empty string.

What does '$' mean in regex?

$ means "Match the end of the string" (the position after the last character in the string).


1 Answers

You can generally do ranges as follows:

\d{4,7} 

which means a minimum of 4 and maximum of 7 digits. For your particular case, you can use the one-argument variant, \d{15}.

Both of these forms are supported in Python's regular expressions - look for the text {m,n} at that link.

And keep in mind that \d{15} will match fifteen digits anywhere in the line, including a 400-digit number. If you want to ensure it only has the fifteen, you use something like:

^\d{15}$ 

which uses the start and end anchors, or

^\D*\d{15}\D*$ 

which allows arbitrary non-digits on either side.

like image 74
paxdiablo Avatar answered Oct 03 '22 19:10

paxdiablo