Java 正規表現

Java 正規表現 現在、JavaでWEBアプリケーションを作成しています。正規表現を実装したいです。 条件は 6〜15文字以内で英数字のみで構成されており、 かつ英数字を1文字以上使用している事(大文字小文字は区別しない)が条件です。 これを1行で書きたいですが、まだ正規表現に慣れていなく引き出しがないので作れません。 一つ正解のコードをお示し頂けますか。 以下例です。 Kjwn38 ◯ kjlwn38 ◯ 38kjlWn ◯ 38kjlwn ◯ iamdwqgm × 157394679 ×

Java57閲覧

ベストアンサー

このベストアンサーは投票で選ばれました

0

正規表現×1個 だけで、は、無理な気がする。 # というか、正規表現「だけ」では無理なことを、 # 正規表現でやろうとしてる、と思う。 ## そういう人、あなただけじゃないけど。 どうしても正規表現でやりたいなら。 複数の正規表現マッチ に分けて、and 評価にしたらどうですか? かっこよく は ない かもしれないけど。 (e.g.) s.matches("^[a-zA-Z0-9]{6,15}$") && s.matches(".*[0-9].*") && s.matches(".*[a-zA-Z].*") https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#matches-java.lang.String- https://docs.oracle.com/javase/jp/8/docs/api/java/util/regex/Pattern.html#sum

余計なお世話かもしれませんが。 正規表現 や SQL は、いわば ・独立別言語 で ・手続き進行型のプログラミング言語とは異質 なものです。 現代の多くの プログラミング言語 で、 文字列オブジェクトに包む形で利用するけど、 ・異質な別モンをハイブリッドしてる って、私は思ってる。 やりすぎ は勧めません。 ネタとしてはおもしろいけど、他人(含む何ヶ月後 かにコード読み返す自分)が読むのに悩むことは、 しないほうがいい。 # write only なコード

その他の回答(3件)

0

前に回答した人のを流用させていただき、 それに論理ANDが機能するように作りました。 (ネットを参考にして regex logical and operator) いちおう1つの正規表現で動作しますが、全角文字はだめと出ます。 public class regex1 { public static void main(String[] args) { String s1 = "Kjwn38"; String s2 = "kjlwn38"; String s3 = "38kjlWn"; String s4 = "38kjlwn"; String s5 = "iamdwqgm"; String s6 = "157394679"; System.out.println(isMatch(s1)); System.out.println(isMatch(s2)); System.out.println(isMatch(s3)); System.out.println(isMatch(s4)); System.out.println(isMatch(s5)); System.out.println(isMatch(s6)); System.out.println("--------"); System.out.println(isMatch2(s1)); System.out.println(isMatch2(s2)); System.out.println(isMatch2(s3)); System.out.println(isMatch2(s4)); System.out.println(isMatch2(s5)); System.out.println(isMatch2(s6)); } public static boolean isMatch(String s) { boolean b = s.matches("^[a-zA-Z0-9]{6,15}$") && s.matches(".*[0-9].*") && s.matches(".*[a-zA-Z].*"); return(b); } public static boolean isMatch2(String s) { boolean b = s.matches("^(?=^[a-zA-Z0-9]{6,15}$)(?=.*[0-9].*)(?=.*[a-zA-Z].*).*"); return(b); } }

0

kjl********さん ちょっと思いつかないですが、ゴチャゴチャ考えるより、 素直に&&条件を使ってif文を作っちゃった方がいいような気がしますけど。 もちろん、判定の部分をサブルーチン化して、ブラックボックス化してしまうのも アリだと思います。