extractPossibleNumber static method
Attempts to extract a possible number from the string passed in. This
currently strips all leading characters that cannot be used to start a phone
number. Characters that can be used to start a phone number are defined in
the _validStartCharPattern
. If none of these characters are found in the
number passed in, an empty string is returned. This function also attempts to
strip off any alternative extensions or endings if two or more are present,
such as in the case of: (530) 583-6985 x302/x2303. The second extension here
makes this actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985
x2303. We remove the second extension so that the first number is parsed
correctly.
number
is the string that might contain a phone number.
extractPossibleNumber returns the number, stripped of any non-phone-number prefix
(such as 'Tel:') or an empty string if no character used to start phone numbers
(such as + or any digit) is found in the number.
Implementation
static String extractPossibleNumber(String number) {
RegExpMatch? m = _validStartCharPattern.firstMatch(number);
if (m != null) {
number = number.substring(m.start, number.length);
// Remove trailing non-alpha non-numerical characters.
RegExpMatch? trailingCharsMatcher =
unwantedEndCharPattern.firstMatch(number);
if (trailingCharsMatcher != null) {
number = number.substring(0, trailingCharsMatcher.start);
}
// Check for extra numbers at the end.
RegExpMatch? secondNumber = secondNumberStartPattern.firstMatch(number);
if (secondNumber != null) {
number = number.substring(0, secondNumber.start);
}
return number;
} else {
return '';
}
}