我正在尝试编写与挪威所有电话号码相匹配的正则表达式。这意味着该号码可以以+47,0047,47或没有国家/地区代码开头。为实现这一点,我正在使用以下常规表现:
Pattern.compile("^((0047)?|(\"+47)?|(47)?)\"d{8}$")
问题在于它永远不会匹配。我正在使用以下有效示例对其进行测试:
90909090, normal number
4790909090, number with country code
+4790909090, country code using +
004790909090, country code using 00
且无效:
+47909090, without country code or too short number
9090909o, invalid character
9090909, too few digits
+4690909090, wrong country code
909090909, too many digits
00474790909090 Trying to fool the regex now
答案 0 :(得分:8)
认为你正在寻找
(0047|\+47|47)?\d{8}
在Java表达式中将是:
Pattern.compile("(0047|\\+47|47)?\\d{8}");
答案 1 :(得分:1)
萨米的答案几乎是正确的,但是无法识别以0或1开头的数字。不允许以0开头的数字,挪威保留以1开头的数字(ref) 。以下应该有效:
/^(0047|\+47|47)?[2-9]\d{7}$/
在Java表达式中:
Pattern.compile("^(0047|\+47|47)?[2-9]\d{7}$")