質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
jQuery Validation Plugin

jQuery Validation PluginはjQueryのプラグインであり、クライアント側のデータ検証を行う役割があります。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

25890閲覧

国際電話番号を含めた電話番号の正規表現がわからない

unity5656

総合スコア17

jQuery Validation Plugin

jQuery Validation PluginはjQueryのプラグインであり、クライアント側のデータ検証を行う役割があります。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

3クリップ

投稿2016/07/16 23:38

編集2016/07/19 01:29

jquery.validationEngine-ja.js で入力フォームのチェックをさせています。
今回、海外の方から「電話番号が入力できない」と問い合わせが来て、
コードをあらためて確認したところ、

JavaScript

1 "tel": { 2 // credit: jquery.h5validate.js / orefalo 3 "regex": /^0[0-9\-\(\)]{7,13}$/, 4 "alertText": "電話番号が正しくありません" 5 },

となっていました。

希望としては、
・国内の固定電話のチェック
03-○○○○-○○○○
045-○○○-○○○○
0456-○○-○○○○
04567-○-○○○○
0120-○○○-○○○
・携帯電話のチェック
090-○○○○-○○○○
に加えて、
・国際電話番号のチェック
+81-3-○○○○-○○○○(+プラス記号の記入も許可する)
81-3-○○○○-○○○○
も確認させたいのですが、どのように書き直したらよいのでしょうか?
-(ハイフン)はあってもなくても許可させたいです。

初めての質問で、わかりづらいところも多いと思いますが
どなたか回答お願い致します。

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/07/17 16:50

jquery.validationEngine-ja.js の使い方というより、「国際電話番号を含めた電話番号の正規表現がわからない」とし、「正規表現」タグを追加されることをお勧めします。
unity5656

2016/07/17 22:41

ありがとうございます!タイトルとタグを変更しました。
kei344

2016/07/18 02:21

こちらの環境では変更が確認できませんでした。すみませんが、もう一度確認してもらえませんか?最近teratailで修正が保存されない事がたまにあるようなので・・・。
unity5656

2016/07/18 02:25

ご指摘ありがとうございます。再度変更しました。これで変わっていると思うんですが。。。
kei344

2016/07/18 02:29

編集ありがとうございます!
unity5656

2016/07/18 14:00

アドバイスありがとうございました。
guest

回答3

0

0 で始まっていたり、桁数が決まっていたりというのは日本独自のルールです。
国際対応するならば、+?[\d-()]+ くらい大まかにしないと難しいかもしれません。

ハイフンやカッコの不正な連続などチェックのしようはあるのでしょうが、文章の中から取り出すならともかく、ユーザーに電話番号として入力させるのにそこまで細かいチェックが必要なのかどうかということろも検討してみてください。

投稿2016/07/18 04:03

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unity5656

2016/07/19 03:18

コメントありがとうございます。参考にさせていただきます。
guest

0

対象とする国によりますが、とりあえず国番号は1桁から5桁、1桁-3桁など多彩なので、どれかひとつの正規表現でカバーするというのは難しい気もします。

【国際電話番号の一覧 - Wikipedia】
https://ja.wikipedia.org/wiki/国際電話番号の一覧

【北米電話番号計画 - Wikipedia】
https://ja.wikipedia.org/wiki/北米電話番号計画


追記:

こんなライブラリがありました。 Java, C++, JavaScript(C#, objective-c, Python, Ruby, PHP用もフォーク(?)されたものがあるようで最下部にリンクがあります)に対応した電話番号のパース/検査/書式化ライブラリです。(まだ試していませんが)

【GitHub - googlei18n/libphonenumber: Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.】
https://github.com/googlei18n/libphonenumber

【libphonenumberで電話番号のパース、検査、書式化 - giris】
http://giris.jp/2016/03/21/libphonenumberで電話番号のパース、検査、書式化/

jquery.validationEngine-ja.js と絡めるのは一手間かかるとは思いますが、(比較的)正確なパースが必要な場合は使えるかもしれません。

投稿2016/07/18 14:06

編集2016/07/19 04:40
kei344

総合スコア69366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2016/07/19 03:14

> 国番号は1桁から5桁、1桁-3桁など多彩なので 「1桁-3桁」もあるんですね。 桁数は後から拡張されそうなので現状はこんな感じでしょうか…。 /^(?:\+?\d+-(?:\d+-)?)?\d+(?:-\d+){2}$|^\+?\d+$/
unity5656

2016/07/19 03:19

国番号は本当にいろいろで悩んでいました。ありがとうございます。このコードも参考にさせていただきます。
unity5656

2016/07/19 08:18 編集

追記部分、確認いたしました。情報ありがとうございます。正確性を求めたいと言いますか、提案されているフィーでどこまで対応するか、という別の悩みが出て来ました(苦笑)先方にどこまで求めるかを確認しつつ、コードを修正していきたいと思います。
guest

0

ベストアンサー

電話番号の桁の規則を知らないので桁数は考慮しませんが、

JavaScript

1/^(?:\+?\d+-)?\d+(?:-\d+){2}$|^\+?\d+$/

桁数を考慮するなら規則性を調べて繰り返し回数を制限してください。

Re: unity5656 さん

投稿2016/07/18 13:51

think49

総合スコア18156

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

unity5656

2016/07/18 14:02

教えていただいたコードに直したところ無事に国際電話番号(+などのチェックも)の表記をチェックできました。 助かりました。 本当にありがとうございました。
think49

2016/07/19 03:16

正しい正規表現を書くには正しい知識が必要です。 他の方の回答も確認してご自身のコードに反映することをお勧めします。 また、ベストアンサーでなくとも、お礼を言うのは最低限の礼儀だと思います。
unity5656

2016/07/19 03:20

アドバイスありがとうございます。回答を下さった方にお礼のコメントを残しました。今後もよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問