1

preg_match を使用して検証するように設定された電話番号フィールドがあります。

function ValidPhone($phone) {
    return preg_match('/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/', trim($phone));
}

これにより、電話番号が xxx-xxx-xxxx 形式で入力され、数値であることが保証されます。

私は正規表現にあまり詳しくありません。これを拡張して複数の形式を許可する方法を誰か教えてもらえますか? すなわち、xxx xxx xxxx または xxx.xxx.xxxx または (xxx) xxx-xxxx

ありがとう。

4

3 に答える 3

5

最も簡単な解決策は、最初に数値ではないものをすべて取り除くことだと思います:

function ValidatePhone($phone) {
    $phone = preg_replace('/\D+/', '', $phone);
    return strlen($phone) == 10;
}

コンテンツではなくフォーマットを検証しているため、次のようにします。

function ValidatePhone($phone) {
    $patterns = array(
        '\d{3}([-\. ])\d{3}\g{-1}\d{4}',
        '\(\d{3}\) \d{3}-\d{4}'
        );

    $phone = trim($phone);

    foreach ($patterns as $pattern) {
        if (preg_match('/^' . $pattern . '$/', $phone))
            return true;
    }

    return false;                                                                                                                   
}
于 2012-08-23T16:59:17.937 に答える
0
(\d{3} \d{3} \w{4})|(\d{3}-\d{3}\-\d{4})|(\d{3}\.\d{3}\.\d{4})

\d:1桁の数字[0-9]

\d{3}:31桁の数字

|:論理和

于 2012-08-23T21:24:50.930 に答える
0

米国の番号の場合:

\(?[2-9]\d\d)?[ -\.]?[2-9]\d\d[ -\.]?\d{4} 
于 2012-08-23T17:02:46.943 に答える