"(?:(?:[0-3]?\\d/[01]?\\d)|"
"(?:[01]?\\d/[0-3]?\\d))/(?:[12]\\d)?\\d{2}")),
time_stamps_(regexp_factory_->CreateRegExp(
- "[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d [0-2]\\d$")),
+ "[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$")),
time_stamps_suffix_(regexp_factory_->CreateRegExp(":[0-5]\\d")),
matching_brackets_(regexp_factory_->CreateRegExp(
StrCat(leading_maybe_matched_bracket_, non_parens_, "+",
// See the License for the specific language governing permissions and
// limitations under the License.
-// Author: Lara Rennie
-
#include "phonenumbers/phonenumbermatcher.h"
#include <string>
NumberTest("2012-01-02 08:00", RegionCode::US()),
NumberTest("2012/01/02 08:00", RegionCode::US()),
NumberTest("20120102 08:00", RegionCode::US()),
+ NumberTest("2014-04-12 04:04 PM", RegionCode::US()),
+ NumberTest("2014-04-12 04:04 PM", RegionCode::US()),
+ NumberTest("2014-04-12 04:04 PM", RegionCode::US()),
+ NumberTest("2014-04-12 04:04 PM", RegionCode::US()),
};
// Strings with number-like things that should only be found under "possible".
* trailing ":\d\d" -- that is covered by TIME_STAMPS_SUFFIX.
*/
private static final Pattern TIME_STAMPS =
- Pattern.compile("[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d [0-2]\\d$");
+ Pattern.compile("[12]\\d{3}[-/]?[01]\\d[-/]?[0-3]\\d +[0-2]\\d$");
private static final Pattern TIME_STAMPS_SUFFIX = Pattern.compile(":[0-5]\\d");
/**
new NumberTest("2012-01-02 08:00", RegionCode.US),
new NumberTest("2012/01/02 08:00", RegionCode.US),
new NumberTest("20120102 08:00", RegionCode.US),
+ new NumberTest("2014-04-12 04:04 PM", RegionCode.US),
+ new NumberTest("2014-04-12 04:04 PM", RegionCode.US),
+ new NumberTest("2014-04-12 04:04 PM", RegionCode.US),
+ new NumberTest("2014-04-12 04:04 PM", RegionCode.US),
};
/**
LOGGER.log(Level.SEVERE,
"A maximum of one intlFormat pattern for a numberFormat element should be " +
"defined.");
- throw new RuntimeException("Invalid number of intlFormat patterns for country: " +
- metadata.getId());
+ String countryId = metadata.getId().length() > 0 ?
+ metadata.getId() : Integer.toString(metadata.getCountryCode());
+ throw new RuntimeException("Invalid number of intlFormat patterns for country: " + countryId);
} else if (intlFormatPattern.getLength() == 0) {
// Default to use the same as the national pattern if none is defined.
intlFormat.mergeFrom(nationalFormat);
format.setPattern(validateRE(numberFormatElement.getAttribute(PATTERN)));
NodeList formatPattern = numberFormatElement.getElementsByTagName(FORMAT);
- if (formatPattern.getLength() != 1) {
- LOGGER.log(Level.SEVERE,
- "Only one format pattern for a numberFormat element should be defined.");
- throw new RuntimeException("Invalid number of format patterns for country: " +
- metadata.getId());
+ int numFormatPatterns = formatPattern.getLength();
+ if (numFormatPatterns != 1) {
+ LOGGER.log(Level.SEVERE, "One format pattern for a numberFormat element should be defined.");
+ String countryId = metadata.getId().length() > 0 ?
+ metadata.getId() : Integer.toString(metadata.getCountryCode());
+ throw new RuntimeException("Invalid number of format patterns (" + numFormatPatterns +
+ ") for country: " + countryId);
}
format.setFormat(formatPattern.item(0).getFirstChild().getNodeValue());
}