The code between curly brackets is a rule.
Each rule is processed separately moving left to right until the call is processed.
After the call is processed the rules to the right are ignored.
If you only have one rule the curly brackets are not required.
There is a syntax error in your 1st example.
It should be:
{(?|x|xx|xxx|xxxx|xxxxx|xxxxxx|un@@.|anon@@.):},{ph}
Anything between the brackets is a DigitMap.
If the DigitMap matches the CallerID the call is routed to the resource after the colon.
The 1st rule doesn't have a resource after the colon, so the call is routed nowhere and the call will be rejected.
If the call is not rejected, then the call will be unconditionally routed to the Phone Port.
To answer your question:
{(?|x|xx|xxx|xxxx|xxxxx|xxxxxx|un@@.|anon@@.):},{>('100000'):ph}
The 2nd suggestion is good enough.
{>('100000'):ph}
If the call doesn't match your provider's userid it will be rejected.
This will reject scanner calls since they will not contain the userid, so you don't have to compare for the different callerid patterns.
You could code it like this:
{>100000:ph}
A DigitMap will process reserved characters.
So an "x" will compare for a digit.
Since 100000 has no reserved characters, you can remove the brackets and 100000 becomes a literal.
The quotes make 100000 a literal within a DigitMap, so it's redundant.