Divisibility by 4
The single-digit numbers which are divisible by 4 are 0, 4, and 8.
The two-digit numbers which are divisible by 4 can be divided into two groups:
12, 16, 32, 36, 52, 56, 72, 76, 92, 96
20, 24, 28, 40, 44, 48, 60, 64, 68, 80, 84, 88
Any number which is three or more digits and ends in any of these two-digit numbers is divisible by four.
Therefore, the regular expression should search for numbers of the form d*[02468][048]
, or the form d*[13579][26]
, or the single digit numbers 0
, 4
, and 8
.
The Regex
This regular expression matches all numbers, positive or negative, which are divisible by 4:
-?(?:d*[02468][048]|d*[13579][26]|[048])
Note that this could match part of a number, such as 24
in 1245
. If you want to make sure that you only match an entire number, you could add negative look-around expressions:
(?<!d)-?(?:d*[02468][048]|d*[13579][26]|[048])(?!d)
or you could use word boundaries:
-?(?:d*[02468][048]|d*[13579][26]|[048])