protected static function createExtnPattern($singleExtnSymbols)
{
// There are three regular expressions here. The first covers RFC 3966 format, where the
// extension is added using ";ext=". The second more generic one starts with optional white
// space and ends with an optional full stop (.), followed by zero or more spaces/tabs and then
// the numbers themselves. The other one covers the special case of American numbers where the
// extension is written with a hash at the end, such as "- 503#".
// Note that the only capturing groups should be around the digits that you want to capture as
// part of the extension, or else parsing will fail!
// Canonical-equivalence doesn't seem to be an option with Android java, so we allow two options
// for representing the accented o - the character itself, and one in the unicode decomposed
// form with the combining acute accent.
return static::RFC3966_EXTN_PREFIX . static::$CAPTURING_EXTN_DIGITS . "|" . "[ \\t,]*" . "(?:e?xt(?:ensi(?:ó?|ó))?n?|(?:e)?xt(?:n)?|" . "[" . $singleExtnSymbols . "]|int|int|anexo)" . "[:\\..]?[ \\t,-]*" . static::$CAPTURING_EXTN_DIGITS . "#?|" . "[- ]+(" . static::DIGITS . "{1,5})#";
}