regular expression for telephone/mobile per country and variable naming
For CTRY_BELGIUM_TELEPHONE:

First, to understand what the regex is doing, I'll add the railroad diagram



Demo on RegEx101

What it matches:

Zero followed by


Eight Digits
Digit-Space-Three_Digits-Space-Two_Digits-Space-Two_Digits
Digit-Hyphen-Three_Digits-Hyphen-Two_Digits-Hyphen-Two_Digits
Two_Digits-Space-Two_Digits-Space-Two_Digits-Space-Two_Digits
Two_Digits-Hyphen-Two_Digits-Hyphen-Two_Digits-Hyphen-Two_Digits


Now, looking at above, we can easily spot that many of the things are use multiple times in the same sub-pattern.

Can we combine/reuse them?

For simplicity, I'll use single backslash from here onward. You need to escape it by prepending another backslash to escape it in string.

When I say nth road, it'll refer to the nth path in the above diagram.

Review:

The first road is straight forward. Match eight digits. Simple!

The second road, \d\s\d{3}\s\d\d\s\d\d. As you've used \d{3}, similarly we can write \d\d as \d{2}. Cool!

It'll now become \d\s\d{3}\s\d{2}\s\d{2}.

The third road similarly can be written as \d-\d{3}-\d{2}-\d{2}.

For fourth and fifth road, same can be used.

Second and Third roads are similar except the separator used between digits. Is there any way to combine them?

Back-reference.

How can back-reference be used here?

I'll show you: The character should be captured in capturing group and refer it with back-reference whenever needed.

\d([\s-])\d{3}\1\d{2}\1\d{2}


The regex here can be used to match both second and third road.


\d: Match a digit
([\s-]): Match either a space character or hyphen and add it into first capturing group
\d{n}: Match digits n times.
\1: Match whatever is in first captured group(see #2 above)


There still is repetition in \1\d{2}\1\d{2}. This can be added in group and repeated twice (?:\1\d{2}). Since, back-reference is used, it's not better to use non-capturing group.(You'll know why in the 4th and 5th road).

Similarly, for fourth and fifth road, the regex will be

\d{2}([\s-])\d{2}(?:\1\d{2}){2}


At this stage, the regex will become

^0(?:\d{8}|\d([\s-]?)\d{3}(?:\1\d{2}){2}|\d{2}([\s-])\d{2}(?:\2\d{2}){2})$


The first part \d{8} can also be removed by using ? quantifier on the first captured group. By doing this, we're making the [\s-] optional and thus \1 will be empty and will match eight digits with no spaces between them.

So, Final RegEx is

/^0(?:\d([\s-]?)\d{3}(?:\1\d{2}){2}|\d{2}([\s-])\d{2}(?:\2\d{2}){2})$/


Here's railroad diagram for this



Note that 1 and 2 in the diagram refer to respective capturing group.

Demo on RegEx101

Although, this answer only explains about one RegEx, other RegExes can be modified in the similar way.