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

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

ただいまの
回答率

87.49%

Validationチェックの書き方

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 917

score 11

全角アルファベット

/^[A-Z]+$/

アルファベット(大文字・小文字)

/^[a-zA-Z]+$/

全角英小文字はどのような書き方になるのか教えて頂きたいです。

package pra01;

public class tes {
 var rep =/^[a-z]+$/;
}

package pra01;

    class main {
        public static void main(String[] args) {
            tes test01 = new tes();
            System.out.println(test01.rep("ABcd"));
    }
    }
package pra01;

    class main {
        public static void main(String[] args) {
             String text = "abcdef";

                System.out.println(text.matches("^[a-z]+$"));
        }
    }  
結果→ true  //^[a-z]+$"結果を確認できた。
package pra01;

    class main {
        public static void main(String[] args) {
            rep  text01 = new rep();

                System.out.println(text01.rep("abcdef"));
        }
    }

package pra01;

public class rep {

public String rep(String str) {

 String a = str;
 String b = ^[a-z]+$;

 if (a == b) {
     System.out.println("等しいです");
 } else {
     System.out.println("等しくありません");
 }

    return null;
}}
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    トークン "^" に構文エラーがあります。Expression が無効です


^[a-z]+$のエラーが消えないのですが、どのように直したらいいのかわかりません。

package pra01;

class main {
        public static void main(String[] args) {
            rep  text01 = new rep();

                System.out.println(text01.rep("abcdef"));
        }
    }
package pra01;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class rep {

public Matcher rep(String str) {

 //判定する文字列
 String a = str;

 //判定するパターンを生成
 Pattern b = Pattern.compile("^[a-z]+$");
 Matcher m = b.matcher(a);

    return m;
}}
コンソール
java.util.regex.Matcher[pattern=^[a-z]+$ region=0,6 lastmatch=]


上記また修正いたしましたが、コンソールにjava.util.regex.Matcher[pattern=^[a-z]+$ region=0,6 lastmatch=]とでたのですが、
検索しても実行が正常にできているのかがわからないのですが、こちらは実行できているんでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • m.ts10806

    2020/10/26 12:51 編集

    「タグ追加してください。」とコメントしたのに最初にあったタグを全て削って「正規表現」のタグだけになってしまって、Javaの回答は得られない状況です。

    キャンセル

  • miyabi_takatsuk

    2020/10/26 12:52 編集

    あぁなるほど・・・。
    質問者さん、
    Javaにおいての、型について学習してください。
    そっちの方が先な気がします。
    Java的には「文字列っぽいリテラルだから文字列だと解釈したいけど、文字列にならない記載になってんよ」ってエラーです。
    また、正規表現の実行の仕方が間違っています。

    Java 正規表現 置換などで調べ直してみましょう。

    キャンセル

  • m.ts10806

    2020/10/26 12:58

    ところで「rep」というメソッドが存在しないのはお気づきですか?
    出てるエラー解決するだけならすぐですが、次のエラーも起きるし、Javaの基本的なところ全部抜けてるのでちょこちょこやってただけたとほとんど進まないと思います。

    キャンセル

回答 2

checkベストアンサー

+1

単なる推測だけれど。
「単体で確認できたけど、クラスやメソッドとして外に出すとエラーになった」ということでしょうかね。

正規表現といっても記法自体はそういう文字列の集合体。
2つ目のコードでちゃんとSystem.out.println(text.matches("^[a-z]+$"));ってできるんだから、定義を別クラスや外にだしたとしても同じように「文字列」として持っておけば良い話です。

あと蛇足。
文字列の比較を==でやってはいけません。
この辺りは調べればすぐ出てきますし、teratailでも何度も出ている質問なのですぐ見つかります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/10/26 14:09

    package pra01;

    public class rep {

    public String rep(String str) {

    String a = str;
    String b = "^[a-z]+$";

    if (a.equals(b)) {
    System.out.println("等しいです");
    } else {
    System.out.println("等しくありません");
    }

    return null;
    }}
    に変更しましたら、等しくありませんと出てしまいました。引数はabcdefをわたしているのですが、どうしてでしょうか?

    キャンセル

  • 2020/10/26 14:11 編集

    abcdef

    ^[a-z]+$
    はどう見ても等しくないですよね。
    正規表現どこいったんですか?

    キャンセル

  • 2020/10/26 14:11

    "^[a-z]+$"文字列の持ち方は引数"^[a-z]+$"でないとだめで判定としては上記書き方ということではないですか?

    キャンセル

  • 2020/10/26 14:13 編集

    正規表現の基本はPatternとMatcherですよね。
    abcdef

    ^[a-z]+$
    を「文字列比較」してどうするんでしょう。

    キャンセル

+1

全角英小文字
文字コードが続いている範囲は普通にできるでしょう

/[a-z]/
/^[a-z]+$/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/10/26 12:33

    ありがとうございます。/^[a-z]+$/を試してみたいのですが、どのようなメソッドを書けば確認できるのかわからないのですが、すいませんが教えていただけないでしょうか?

    キャンセル

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

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る