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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

847閲覧

正規表現について確認も兼ねて質問です

Tatsuo_Iriyama

総合スコア50

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2018/05/14 11:58

電話番号の正規表現において、半角数字のみ(ハイフン無し)にしたい場合、以下のコードで

java

1public static String telNumberChk(String telNumber) { 2 String result = "TRUE"; 3 4 if(telNumber.equals("")) { 5 result = "【電話番号を入力してください】"; 6 }else if(telNumber.length() < 11 || telNumber.length() > 13) { 7 result = "【電話番号は10文字以上13文字以下で入力してください】"; 8 }else if(!telNumber.matches("^[0-9\-]+$")) { 9 result = "【電話番号は半角数字で、正しいものを入力してください】"; 10 } 11 return result; 12 }

("^[0-9-]+$")⇦この部分を

("^[0-9]+$")⇦こちらに変更すれば半角数字のみになるでしょうか?

そもそも上記のコードでおかしい点があれば教えて下さい。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

("^[0-9]+$")

はいOKです、オンライン正規表現確認サイトで確認してみてくださいな。


以下からはコード添削です。
1,if文の条件が11文字未満ですが、エラー文言が10文字以上です。エラーの文言と実際の処理内容が一致していません。(コードは10文字をエラーとして取り扱っています。)
以上/以下は解釈誤りを起こしやすい言葉なので、「以上及びそれを含む」とするか意識して取り扱ってくださいな。

Java

1}else if(telNumber.length() < 11 || telNumber.length() > 13) { 2 result = "【電話番号は10文字以上13文字以下で入力してください】";

2,エラーチェックの場合、即時リターンをするとif文が短くなります。

Java

1if(telNumber.equals("")) { 2 return "【電話番号を入力してください】"; 3}

String result = "TRUE";としなくても戻り値のStringのLengthで判断する形にもできるかと。

サンプルコードです。ご参考まで。

Java

1public class A126169 { 2 3 public static void main(String[] args) { 4 System.out.println(A126169.telNumberChk("123456789")); 5 System.out.println(A126169.telNumberChk("AAAAAAAAAAA")); 6 } 7 8 public static String telNumberChk(String telNumber) { 9 10 if (telNumber.equals("")) { 11 return "【電話番号を入力してください】"; 12 } 13 if (telNumber.length() < 10 || telNumber.length() > 13) { 14 return "【電話番号は10文字以上14文字未満で入力してください】"; 15 } 16 if (!telNumber.matches("^[0-9]+$")) { 17 return "【電話番号は半角数字で、正しいものを入力してください】"; 18 } 19 return ""; 20 } 21}

投稿2018/05/14 12:34

編集2018/05/14 15:46
umyu

総合スコア5846

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

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

Tatsuo_Iriyama

2018/05/14 12:39

助かりました!ありがとうございました!
umyu

2018/05/14 12:39

いえ、エラーが結構あるので添削中ですが><
guest

0

これだけでいいような…。

String result = "TRUE"; if(!telNumber.matches("^\d{10,13}$")) { result = "【電話番号は10文字以上13文字以下の半角数字で入力してください】"; } return result;

投稿2018/05/14 12:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

umyu

2018/05/14 12:58

そうですね、そちらの方がシンプルです。1票投票致します。
Tatsuo_Iriyama

2018/05/14 13:01

確かにこちらの方が短いですしコード的には良いんですが、仕様書通りに作るとなると、エラーメッセージをそれぞれで表示する様になっていて、こうしなければならないんです。でもとても参考になりました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問