2017-12-28 21 views
-1

スペインの電話番号を検証しようとしています。私は正規表現を宣言している:Preg_matchが一致しません

$telefono_regex = '/^(6|7|8|9)[0-9]{8}$/'; 

そして私は数チェック:

if (!preg_match($telefono_regex, $telefono)){ 
    array_push($errores, 'telefono'); 
} 

なぜこれが常にfalseを返すんか?私はhttps://regex101.com/をチェックして、同じ数字と一致するものを見つけました。

+0

本当にfalseを返し、1または0でなければエラーが発生しています。http://php.net/manual/en/function.preg-match.php – snap

+0

しようとしている数字の形式は何ですか。一致? –

+0

あなたのregex101.com具体的な例を挙げてください。一致が実行されたと言います –

答えて

0

あなたの質問とあなたの最初の試行では正規表現regex101.comとは異なっていました。あなたは(regex101.com上のあなたの最初の試みのように)、オプションのダッシュやスペースごとに3桁の数字を確認したいと仮定すると、

、あなたはこれを試すことができます。

$telefono_regex = '/^[6-9]{3}(?:[ -]?[0-9]{3}){2}$/'; 
  • ^[6-9]{3}:6から3桁9
  • (?:[ -]?[0-9]{3})
  • 全3つの数字([0-9]{3})、続いて、非捕捉グループ0または1スペースまたはダッシュを一致させる([ -]?
  • {2}:2発生と一致します非捕捉性グループの

hereで確認できます。ここで

+0

OPの1つ*がこの回答を肉付けするために*働かない理由をもう少し詳しく説明したいかもしれません。 –

+0

@ChristianRauそうです。私はいくつかの説明を追加しました。 – SLePort

0

http://rextester.com/ESYBOO56762

$telefono_regex = '/^[6-9][0-9]{8}$/'; 

$num='678912345'; 
echo preg_match($telefono_regex,$num); 

答えは1で働いPHP-フィドルです。私はあなたの最初の(6|7|8|9)グループをより短い[6-9]で置き換えましたが、どちらも同じように動作するはずです。

関連する問題