import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class IPv4Validator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// ユーザーã‹ã‚‰ã®å…¥åŠ›ã‚’å–å¾—
System.out.println("IPv4アドレスを入力ã—ã¦ãã ã•ã„: ");
String userInput = scanner.nextLine();
// IPv4ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æ£è¦è¡¨ç¾ãƒ‘ターン
String ipv4Pattern = "^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$";
// æ£è¦è¡¨ç¾ãƒ‘ターンをコンパイル
Pattern pattern = Pattern.compile(ipv4Pattern);
// Matcherを作æˆ
Matcher matcher = pattern.matcher(userInput);
// IPv4ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æ¤œè¨¼çµæžœã‚’表示
if (matcher.matches()) {
System.out.println("有効ãªIPv4アドレスã§ã™ã€‚");
} else {
System.out.println("無効ãªIPv4アドレスã§ã™ã€‚");
}
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9][0-9]?)$ ã¨ã„ã†æ£è¦è¡¨ç¾ãƒ‘ターンを使用ã—ã¦ã„ã¾ã™ã€‚ã“ã®ãƒ‘ターンã¯IPv4アドレスã®ä¸€èˆ¬çš„ãªå½¢å¼ã«ä¸€è‡´ã™ã‚‹ã‚ˆã†ã«æ§‹ç¯‰ã•れã¦ã„ã¾ã™ã€‚ユーザーã‹ã‚‰ã®å…¥åŠ›ãŒã“ã®ãƒ‘ターンã«ä¸€è‡´ã™ã‚‹ã‹ã©ã†ã‹ã‚’検証ã—ã¦ã„ã¾ã™ã€‚
æ£è¦è¡¨ç¾ã§ã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—
æ£è¦è¡¨ç¾ã§ã¯ã€ç‰¹å®šã®æ–‡å—ã‚„æ–‡å—列ã«å¯¾ã—ã¦ç‰¹åˆ¥ãªæ„味をæŒã¤ãƒ¡ã‚¿æ–‡å—ãŒã‚りã¾ã™ã€‚ã“れらã®ãƒ¡ã‚¿æ–‡å—ã‚’æ–‡å—ã¨ã—ã¦æ‰±ã„ãŸã„å ´åˆã€ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—を行ã†å¿…è¦ãŒã‚りã¾ã™ã€‚エスケープã¯é€šå¸¸ã€ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥ \ を使用ã—ã¦è¡Œã„ã¾ã™ã€‚
以下ã¯ã€ä¸€èˆ¬çš„ãªæ£è¦è¡¨ç¾ãƒ¡ã‚¿æ–‡å—ã¨ãã®ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã®ä¾‹ã§ã™:
- ピリオド
.:- ピリオドã¯ä»»æ„ã®1æ–‡å—ã«ä¸€è‡´ã™ã‚‹ãƒ¡ã‚¿æ–‡å—ã§ã™ã€‚例ãˆã°ã€
A.B㯠“A” 㨠“B” ã®é–“ã«ã©ã‚“ãª1æ–‡å—ã§ã‚‚一致ã—ã¾ã™ã€‚ピリオド自体を検索ã—ãŸã„å ´åˆã¯ã€A\.Bã®ã‚ˆã†ã«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã—ã¾ã™ã€‚
- ピリオドã¯ä»»æ„ã®1æ–‡å—ã«ä¸€è‡´ã™ã‚‹ãƒ¡ã‚¿æ–‡å—ã§ã™ã€‚例ãˆã°ã€
- ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥
\:- ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥è‡ªä½“ãŒãƒ¡ã‚¿æ–‡å—ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚例ãˆã°ã€
\dã¯ä»»æ„ã®æ•°å—ã«ä¸€è‡´ã—ã¾ã™ã€‚ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥è‡ªä½“を検索ã—ãŸã„å ´åˆã¯ã€\\ã¨ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã—ã¾ã™ã€‚
- ãƒãƒƒã‚¯ã‚¹ãƒ©ãƒƒã‚·ãƒ¥è‡ªä½“ãŒãƒ¡ã‚¿æ–‡å—ã¨ã—ã¦ä½¿ç”¨ã•れã¾ã™ã€‚例ãˆã°ã€
- 角括弧
[]:- 角括弧ã¯ã‚ャラクタクラスを定義ã—ã¾ã™ã€‚例ãˆã°ã€
[aeiou]ã¯æ¯éŸ³ã«ä¸€è‡´ã—ã¾ã™ã€‚角括弧自体を検索ã—ãŸã„å ´åˆã¯ã€\\[ã‚„\\]ã®ã‚ˆã†ã«ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã—ã¾ã™ã€‚
- 角括弧ã¯ã‚ャラクタクラスを定義ã—ã¾ã™ã€‚例ãˆã°ã€
- ãƒã‚¤ãƒ•ン
-(範囲指定ã®å ´åˆï¼‰:- 角括弧内ã§ãƒã‚¤ãƒ•ンを使用ã™ã‚‹ã¨ã€ç¯„囲を指定ã§ãã¾ã™ã€‚例ãˆã°ã€
[0-9]ã¯0ã‹ã‚‰9ã¾ã§ã®æ•°å—ã«ä¸€è‡´ã—ã¾ã™ã€‚ãƒã‚¤ãƒ•ン自体を検索ã—ãŸã„å ´åˆã¯ã€\\-ã¨ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ã—ã¾ã™ã€‚
- 角括弧内ã§ãƒã‚¤ãƒ•ンを使用ã™ã‚‹ã¨ã€ç¯„囲を指定ã§ãã¾ã™ã€‚例ãˆã°ã€
ã“れらã®ä¾‹ã‚’通ã˜ã¦ã€æ£è¦è¡¨ç¾å†…ã§ãƒ¡ã‚¿æ–‡å—ã‚’ãã®ã¾ã¾æ¤œç´¢ã™ã‚‹ãŸã‚ã«ã¯ã‚¨ã‚¹ã‚±ãƒ¼ãƒ—ãŒå¿…è¦ã§ã‚ã‚‹ã“ã¨ãŒã‚ã‹ã‚Šã¾ã™ã€‚エスケープを忘れるã¨ã€æ„図ã—ãªã„çµæžœãŒç”Ÿã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚
「013 クラスライブラリã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント