Regex 适用于英国和美国电话的电话号码正则表达式

Regex 适用于英国和美国电话的电话号码正则表达式,regex,Regex,有谁有一个好的正则表达式可以匹配英国和美国的数字吗 它需要迎合英国前缀,如+44,以及美国同等前缀 有人知道这样的表达吗?您可以使用以下内容验证英国手机号码: <?php function valid_UK_mobile($gsm) { return preg_match("/^00447\d{9}$|^07\d{9}$|^447\d{9}$|^[+]447\d{9}$/", $gsm); // +447XXXXXXXXX, 447XXXXXXXXX, 07XXXXXXXXX, 0

有谁有一个好的正则表达式可以匹配英国和美国的数字吗

它需要迎合英国前缀,如+44,以及美国同等前缀


有人知道这样的表达吗?

您可以使用以下内容验证英国手机号码:

<?php
function valid_UK_mobile($gsm) {
    return preg_match("/^00447\d{9}$|^07\d{9}$|^447\d{9}$|^[+]447\d{9}$/", $gsm); // +447XXXXXXXXX, 447XXXXXXXXX, 07XXXXXXXXX, 00447XXXXXXXXX
}
echo (valid_UK_mobile("+447000000000") ? 'OK' : 'NOT OK') . '<br />'; //success
echo (valid_UK_mobile("447000000000") ? 'OK' : 'NOT OK') . '<br />'; //success
echo (valid_UK_mobile("07000000000") ? 'OK' : 'NOT OK') . '<br />'; //success
echo (valid_UK_mobile("00447000000000") ? 'OK' : 'NOT OK') . '<br />'; //success
echo (valid_UK_mobile("00440000000000") ? 'OK' : 'NOT OK') . '<br />'; // fail
?>
stackoverflow有些奇怪,代码-

您甚至可以使用:

^\s*\?020[7,8]{1}\?[]?[1-9]{1}[0-9{2}[]?[0-9]{4}0[1-8]{1}[0-9]{3}\?[]?[1-9]{1}[0-9]{2}[]?[0-9]{3}\s*$


^?:?[]?

那些正则表达式模式太短了

用于检查地理区域代码是否有效以及数字长度是否正确的正则表达式模式运行到:

2?:0[01378]| 3[0189]| 4[017]| 8[0-46-9]| 9[012]\d{7}| 1::?:1?:3[0-48]|[46][0-4]|5[012789]| 7[0-39]| 8[01349]| 21[0-7]|[31[0-8]|[459]1\d | 61[0-46-9]| d{6}1: 2?:0[024-9]| 2[3-9]| 3[3-79]| 4[1-689]|[58][02-9]| 6[0-4789]| 7[013-9]| 9\d| 3?:0[25][02-9]| 3[02-579][468][0-46-9]| 7[1235679]| 9[24578]| 4?:0[03-9]|[28][02-5789]|[37]\d|4[02-69]|5[0-8]|[69][0-79]| 5?:0[1235-9]| 2[024-9]| 3[015689]| 4[02-9]| 5[03-9]| 6\d | 7[0-35-9]| 8[0-468]| 9[0-5789]| 6?:0[034689]|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0124578]| 7:0[0246-9]| 2\d | 3[023678]| 4[03-9]| 5[0-46-9]| 6[013-9]| 7[0-35-9]| 8[024-9]| 9[02-9]| 8?:0[35-9]| 2[1-5789]| 3[02-578]| 4[0-578]| 5[124-9]| 6[2-69]| 7\d | 8[02-9]| 9[02569]| 9?:0[02-589]| 2[02-689]| 3[1-5789]| 4[2-9]| 5[0-579]| 6[234789]| 7[0124578]| 8\d | 9[2-57]\d{6}1?: 2:0:46[1-4]| 87[2-9]| 545[1-79]| 76?:2\d|3[1-8]| 6[1-6]| 9:7:2[0-4]| 3[2-5]| 8?:2[2-8]| 7[0-4789]| 8[345]| 3?:638[2-5]|647[23]|8?:47[04-9]|64[015789]| 4?:044[1-7]| 20?:2[23]| 8\d | 6?:0?:30 | 5[2-57]| 6[1-8]| 7[2-8]| 140 | 8?:052 | 87[123]| 5:24:3[2-79]| 6\d | 276\d | 6:26[06-9]| 686| 6:06?:4\d | 7[4-79]| 295[567]| 35[34]\d | 47?:24 | 61 | 59?:5[08]| 6[67]| 74 | 955[0-4]| 7:26:6[13-9]| 7[0-7]| 442\d | 50?:2[0-3]|[3-68]2 | 76| 8?:27[56]\d | 37?:5[2-5]| 8[239]| 84?:3[2-58]| 9:0:0:6[1-8]| 85 | 52 | d | 3583 | 4 | 66[1-8]| 9:2[01]| 81 | 63 |:23 | 3[1-4]| 9561 || 176888[234678]\d{2}16977[23]\d{3}

上述正则表达式不涉及根西岛、马恩岛或泽西岛的编号


如果你还需要查看英国范围内的手机、免费电话、NGN和付费率以及其他数字,那么还需要做更多的工作。

这不是正则表达式,而是客厅里的把戏!:D你真的在生产环境中使用这个怪物吗?它在libphonenumber中,它拒绝太短、太长的数字,或者使用不带e的区号xist。它位于libphonenumber中,它拒绝太短、太长或使用不存在的区号的号码范围。这是1394个字符。它可能是私钥。作为正则表达式,它无法维护且不可理解。如果这是自由间隔的,有完整的文档和参考链接,可能是useful答案。看看参考资料:看看英国和美国的编号系统,以及它们为适应不断增长的城市、新的手机网络等而变化的速度,我建议使用一个非常简单的正则表达式,检查国家前缀+44或+1,然后检查x个数字,官方数字最多19个,但扩展可能会增加更多。这个问题几乎每周都会出现。请先搜索。可能重复的