jquery.validationEngine-ja.js で入力フォームのチェックをさせています。
今回、海外の方から「電話番号が入力できない」と問い合わせが来て、
コードをあらためて確認したところ、
"tel": {
// credit: jquery.h5validate.js / orefalo
"regex": /^0[0-9\-\(\)]{7,13}$/,
"alertText": "電話番号が正しくありません"
},
となっていました。
希望としては、
・国内の固定電話のチェック
03-○○○○-○○○○
045-○○○-○○○○
0456-○○-○○○○
04567-○-○○○○
0120-○○○-○○○
・携帯電話のチェック
090-○○○○-○○○○
に加えて、
・国際電話番号のチェック
+81-3-○○○○-○○○○(+プラス記号の記入も許可する)
81-3-○○○○-○○○○
も確認させたいのですが、どのように書き直したらよいのでしょうか?
-(ハイフン)はあってもなくても許可させたいです。
初めての質問で、わかりづらいところも多いと思いますが
どなたか回答お願い致します。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
電話番号の桁の規則を知らないので桁数は考慮しませんが、
/^(?:\+?\d+-)?\d+(?:-\d+){2}$|^\+?\d+$/
桁数を考慮するなら規則性を調べて繰り返し回数を制限してください。
Re: unity5656 さん
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
0 で始まっていたり、桁数が決まっていたりというのは日本独自のルールです。
国際対応するならば、\+?[\d-()]+ くらい大まかにしないと難しいかもしれません。
ハイフンやカッコの不正な連続などチェックのしようはあるのでしょうが、文章の中から取り出すならともかく、ユーザーに電話番号として入力させるのにそこまで細かいチェックが必要なのかどうかということろも検討してみてください。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
+1
対象とする国によりますが、とりあえず国番号は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 と絡めるのは一手間かかるとは思いますが、(比較的)正確なパースが必要な場合は使えるかもしれません。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.22%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
kei344
2016/07/18 01:50
jquery.validationEngine-ja.js の使い方というより、「国際電話番号を含めた電話番号の正規表現がわからない」とし、「正規表現」タグを追加されることをお勧めします。
unity5656
2016/07/18 07:41
ありがとうございます!タイトルとタグを変更しました。
kei344
2016/07/18 11:21
こちらの環境では変更が確認できませんでした。すみませんが、もう一度確認してもらえませんか?最近teratailで修正が保存されない事がたまにあるようなので・・・。
unity5656
2016/07/18 11:25
ご指摘ありがとうございます。再度変更しました。これで変わっていると思うんですが。。。
kei344
2016/07/18 11:29
編集ありがとうございます!
unity5656
2016/07/18 23:00
アドバイスありがとうございました。