Web フォームがあり、次の電話番号を次の形式で受け入れたいと考えています。
1234567890 123-456-7890 123.456.7890 123-4567890
最初の数字を 0 または 1 にすることはできません。
正規表現/javascriptでこれを行うにはどうすればよいですか? オンラインでいくつかの正規表現式を見つけましたが、どれも私のニーズに固有のものではありません
Web フォームがあり、次の電話番号を次の形式で受け入れたいと考えています。
1234567890 123-456-7890 123.456.7890 123-4567890
最初の数字を 0 または 1 にすることはできません。
正規表現/javascriptでこれを行うにはどうすればよいですか? オンラインでいくつかの正規表現式を見つけましたが、どれも私のニーズに固有のものではありません
null !== thenumber.match(/^[2-9][0-9]{2}[.-]?[0-9]{3}[.-]?[0-9]{4}$/);
(ブール値の結果でわずかに良い答えを得るために編集されました)
ユーザー提供の形式は無関係であるべきです。電話番号を数字として、つまり数字のみとして保存し、それらを表示するときに統一されたフォーマットを追加する方が理にかなっています。そうしないと、データベースが混乱してしまい、数値を検索するのに苦労することになります (指定された数値が既に 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 桁であることを検証するために使用することもできます。
次の正規表現を検討してください...
[\d-[01]]\d{2}[-\.]?\d{3}[-\.]?\d{4}
注: 例は、上記の正規表現を満たさない 1 で始まります。