[解決済み】JavaScriptで電話番号を検証する
質問
あるサイトでこのコードを見つけたのですが、完璧に動作します。このコードは、電話番号が以下のいずれかの形式であることを検証します。
(123) 456-7890
または
123-456-7890
問題は、私のクライアントが(なぜかわからないが、たぶんクライアントのことだろう)、別のフォーマットを追加したいことだ。 1234567890 .
この正規表現を使っています。
/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/
別のフォーマットも検証することを追加するにはどうしたらよいでしょうか。正規表現が苦手なんです。
どのように解決するのですか?
まず第一に、あなたのフォーマットバリデータは、明らかに NANP (国番号+1)の番号です。 このアプリケーションは、北米以外の国の電話番号を持つ人が使用するのでしょうか? もしそうなら、そのような人が完全に有効な[国際]番号を入力できないようにすることはできません。
次に、バリデーションが正しくありません。 NANP番号は次のような形式です。
NXX NXX XXXX
ここで
N
は2-9の数字であり
X
は0-9の数字です。 また、市外局番や交換局番は、以下のような形式をとらないことがあります。
N11
(特別なサービスとの混同を避けるため、1が2つで終わる)。
ただし
非地域コード(800, 888, 877, 866, 855, 900)の番号には、その番号の前に
N11
を交換します。
つまり、有効な電話番号ではないにもかかわらず、正規表現は (123) 123 4566という数字を渡してしまうのです。 これを修正するには
\d{3}
で
[2-9]{1}\d{2}
.
最後に、あなたはWebブラウザでユーザーの入力を検証しているように感じます。 クライアントサイドの検証は のみです。 利便性 ユーザーに提供する それでも、サーバー上ですべての入力を (再度) 検証する必要があります。
TL;DR に正規表現を使ってはいけません。 電話番号のような複雑な実世界のデータを検証する。 または URL . を使用します。 専門ライブラリ .
関連
-
vue+webrtc(Tencent cloud)ライブ機能の実践を実現するために
-
nodejs unhandledPromiseRejectionWarning メッセージ
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで10進数を検証する - IsNumeric()
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み] 期待される代入または関数呼び出し: 未使用式なし ReactJS
-
[解決済み】React-Redux: アクションはプレーンオブジェクトでなければならない。非同期アクションにはカスタムミドルウェアを使用する
-
[解決済み】React Uncaught Error: 対象コンテナが DOM 要素でない [重複]。
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
[解決済み] 米国の電話番号を検証するための正規表現?重複
-
[解決済み] 正規表現を使用した電話番号の検証方法
-
[解決済み] プレーンなURLをリンクに置き換えるには?