URIs are normally alphanumeric, and normally also contain “.” characters. I think you are using “URI” when you mean the, optional, userinfo part of the URI, and, in most cases, although not the alphanumeric one, the telephone-subscriber variant of userinfo.
SIP-URI = "sip:" [ userinfo ] hostport
uri-parameters [ headers ]
SIPS-URI = "sips:" [ userinfo ] hostport
uri-parameters [ headers ]
userinfo = ( user / telephone-subscriber ) [ ":" password ] "@"
user = 1*( unreserved / escaped / user-unreserved )
user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/"
The BNF for telephone-subscriber can be found in RFC 2806 [9]. Note, however, that any characters allowed there that are not allowed in the user part of the SIP URI MUST be escaped.
Although Asterisk itself, can cope with alphanumeric user fields, FreePBX is written on the assumption that it is dealing with telephone-subscribers, so, at best, it will be difficult to use them.
If you are trying to interpret the user as thought it were a domain (I’m still confused at what you are trying to do), that isn’t really within the scope of FreePBX, and it requires channel driver dependent coding in Asterisk.
Note, whilst I’m under the impression that there may be a legal requirement, in the USA, to allow 911 to be used from within a PABX system without any prefix digits, and therefore it may require special rules, the traditional way of handling PABX numbering is to require a 0 or a 9 (9 is common in the UK) prefix for external lines, which can considerably simplify the routing rules, and make it almost impossible for a local number to conflict with an external one.
NB. I am not up to speed on US 911 rules, or on FreePBX’s features to support them, so cannot guarantee that your current 911 handling is legal. I don’t think you have provided enough information to determine that.