0

Web フォームがあり、次の電話番号を次の形式で受け入れたいと考えています。

1234567890 123-456-7890 123.456.7890 123-4567890

最初の数字を 0 または 1 にすることはできません。

正規表現/javascriptでこれを行うにはどうすればよいですか? オンラインでいくつかの正規表現式を見つけましたが、どれも私のニーズに固有のものではありません

4

3 に答える 3

1

null !== thenumber.match(/^[2-9][0-9]{2}[.-]?[0-9]{3}[.-]?[0-9]{4}$/);

(ブール値の結果でわずかに良い答えを得るために編集されました)

于 2013-11-07T15:35:14.967 に答える
0

ユーザー提供の形式は無関係であるべきです。電話番号を数字として、つまり数字のみとして保存し、それらを表示するときに統一されたフォーマットを追加する方が理にかなっています。そうしないと、データベースが混乱してしまい、数値を検索するのに苦労することになります (指定された数値が既に DB にあるかどうかを調べたい場合は、入力された形式をどうやって知るのでしょうか? )、数値を表示するときに数値の書式設定に一貫性がなくなります。

したがって、ユーザーがフォームに何を入力したかに関係なく、例の番号を 1234567890 として保存します。つまり、次のように、数字以外を削除してから、長さとその他の条件を確認することで、入力を検証できます。

function validPhone( num ){
   var digits = num.replace(/\D/g,'');
   // assuming 10 digits is a rule you want to enforce and the first digit shouldn't be 0 or 1
   return (parseInt(digits[0],10) > 1 && digits.length == 10); 
}

return parseInt(digits, 10) >= 2000000000また、数値が 0 または 1 で始まっておらず、少なくとも10 桁であることを検証するために使用することもできます。

于 2013-11-07T15:48:04.250 に答える
0

次の正規表現を検討してください...

[\d-[01]]\d{2}[-\.]?\d{3}[-\.]?\d{4}

注: 例は、上記の正規表現を満たさない 1 で始まります。

于 2013-11-07T15:39:51.303 に答える