8,10,12,981(瑞典的区号很少)。电话号码总数可以是10或11(仅限数字) 如果是8 + 9或10位数 如果是981 + 7或8位数 这可以在正则表达式中完成吗?
像这样的东西......嗯 (8 | 10 | 12)\ d {n} =>总长度10或11答案 0 :(得分:1)
^(?:8\d{9,10}|(?:10|12)\d{8,9}$
怎么样?
修改强> 然后不要在正则表达式中这样做。伪代码:
function check(number):
array areaCodes = array(8, 10, 12, 981)
if !number ~= '^\d{10,11}$':
return false
foreach in areaCodes as code:
if (substring(number, 0, length(code) - 1) == code) return true
return false
答案 1 :(得分:1)
您可能需要分别处理不同的情况(即区号长度),例如:
^(8\d{9,10}|(10|12)\d{8,9}|981\d{7,8})$
或者您使用look-ahead or look-behind assertions:
^(?=\d{10,11})…$
答案 2 :(得分:0)
我为荷兰做了一次尝试,它有2位和3位区号,分别有7位和6位用户号码(以及一些未完成的其他长度路线):
\+31(?:(?:(?#AREA2D)1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7\d)[2-8]\d{6}|(?:(?#AREA3D)11[134578]|16[124-8]|17[24]|18[0-467]|22[2346-9]|25[125]|29[479]|31[3-8]|32[01]|34[1-8]|41[12368]|47[58]|48[15-8]|49[23579]|51[1-9]|52[1-5789]|54[13-8]|56[126]|57[0-3578]|59[1-9])[2-8]\d{5}|(?:(?#OTHER10D)6[1-68]|8[4578]|91)\d{7})