![](/img/trans.png)
[英]Validate number as a UK mobile number only using libphonenumber-for-php
[英]PHP: How to validate UK landline and mobile numbers?
如何驗證英國電話號碼? 我復制了這個網站的答案,但這個答案只接受手機號碼。 我想接受座機和手機號碼。 可能嗎?
# @reference: http://stackoverflow.com/questions/8099177/validating-uk-phone-numbers-in-php
$telephone = "01752311149"; // not ok.
$telephone = "07742055388"; // ok.
$pattern = "/^(\+44\s?7\d{3}|\(?07\d{3}\)?)\s?\d{3}\s?\d{3}$/";
if (!preg_match($pattern, $telephone))
{
$error = true;
$message.='<error elementid="telephone" message="invalid" />';
}
我試過下面這個正則表達式,但它根本不起作用,
#http://stackoverflow.com/questions/14512810/regular-expression-mobile-and-landline-number
$pattern = "/^\(0\d{1,2}\)\d{3}-\d{4}$/";
有一些正則表達式可用於驗證正常表達式中的電話號碼, 以驗證和格式化GB電話號碼 :
或者, RegExLib.com上有一個似乎運作良好:
^((\(44\))( )?|(\(\+44\))( )?|(\+44)( )?|(44)( )?)?((0)|(\(0\)))?( )?(((1[0-9]{3})|(7[1-9]{1}[0-9]{2})|(20)( )?[7-8]{1})( )?([0-9]{3}[ -]?[0-9]{3})|(2[0-9]{2}( )?[0-9]{3}[ -]?[0-9]{4}))$
編輯:
這將允許移動,固定電話和特殊服務號碼(999,123等) - 假設空間已被剝離:
'/^(?>(?>\\+44|0)(?>(?!7624)(?>[12389]\\d|5[56]|7[06])\\d{8}|(?>(?>[58]00|1\\d{2})\\d{6})|(?>8001111|845464\\d)|7(?>[45789]\\d{8}|624\\d{6}))|999|112|100|101|111|116|123|155|118\\d{3}|(?>\\+44|0)(?>800111|8454647))$/D'
您最好使用現有的庫,而不是嘗試自己的驗證,因為規則有些復雜並且可能隨時間而變化。
例如,這個PHP版本的Google的libphonenumber :
$phoneUtil = PhoneNumberUtil::getInstance();
try {
$numberProto = $phoneUtil->parse('02012345678', 'GB');
} catch (NumberParseException $e) {
echo $e;
}
然后你可以用以下方法檢查號碼的有效性:
$phoneUtil->isValidNumber($numberProto);
此外,此庫允許您檢測電話號碼類型(固定電話,移動電話,voip等)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.