Hello,
The thing is that \D* (non-digits) doesn't include a sequence of characters that contain a plus (+) sign. So, to resolve your issue, you simply need to replace the starting and ending \D* with .* (matches any character). In this case, your zero-level character class will include all characters in the string. The resulting regular expression is as follows:
.*([2-9]\d{2})(\D*)([2-9]\d{2})(\D*)(\d{4}).*
In this case, you don't need to escape anything, just call -ireplace on the value returned by %mobile%:
Import-Module Adaxes
$identity = "%sAMAccountName%"
$mobileNumber = '%mobile%' -ireplace '.*([2-9]\d{2})(\D*)([2-9]\d{2})(\D*)(\d{4}).*', '+1 ($1) $3-$5'
Set-AdmUser -Identity $identity -MobilePhone "$mobileNumber"