挪威数字的正则表达式

时间:2015-11-30 15:21:29

标签: java regex

我正在尝试编写与挪威所有电话号码相匹配的正则表达式。这意味着该号码可以以+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

2 个答案:

答案 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}$")