This is a skill to generate, explain, and test regular expression patterns.
Overview
Easily create complex regular expressions and explain existing patterns in an easy-to-understand way.
Main Features
- Pattern Generation: Automatically generate regular expressions from requirements
- Pattern Explanation: Explain existing regular expressions in a human-readable form
- Test Cases: Provide examples that match and examples that do not match
- Optimization: Conversion to more efficient patterns
- Debugging: Fixing patterns that do not work
- Language Support: JavaScript, Python, Java, Go, etc.
Usage
Pattern Generation
以下の要件で正規表現を生成:
- メールアドレスの検証
- RFC 5322準拠
- サブドメイン対応
Pattern Explanation
以下の正規表現を説明:
^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Generation Examples
Email Address
Requirements: Basic email address validation
Generated Pattern:
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
Explanation:
^- Start of string[a-zA-Z0-9._%+-]+- Username part (alphanumeric and some symbols)@- At sign (required)[a-zA-Z0-9.-]+- Domain name\.- Dot (escaped)[a-zA-Z]{2,}- Top-level domain (2 or more characters)$- End of string
Test Cases:
✅ マッチする:
- user@example.com
- john.doe@company.co.jp
- test+tag@domain.com
❌ マッチしない:
- invalid.email
- @example.com
- user@
- user@domain
Password Strength
Requirements:
- 8 or more characters
- At least 1 uppercase letter
- At least 1 lowercase letter
- At least 1 digit
- At least 1 special character
Generated Pattern:
/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/
Explanation:
(?=.*[A-Z])- Lookahead: at least one uppercase letter is present(?=.*[a-z])- Lookahead: at least one lowercase letter is present(?=.*\d)- Lookahead: at least one digit is present(?=.*[@$!%*?&])- Lookahead: at least one special character is present[A-Za-z\d@$!%*?&]{8,}- 8 or more allowed characters
Test Cases:
✅ マッチする:
- Password123!
- Secure@Pass1
- MyP@ssw0rd
❌ マッチしない:
- password (大文字・数字・記号なし)
- PASSWORD123 (小文字・記号なし)
- Pass123 (7文字・記号なし)
URL Extraction
Requirements: Extract URLs from text
Generated Pattern:
r'https?://(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_+.~#?&/=]*)'
Japanese Phone Number
Requirements: 03-1234-5678 format
Generated Pattern:
/^0\d{1,4}-\d{1,4}-\d{4}$/
Credit Card Number
Requirements: 16 digits, supports space/hyphen separators
Generated Pattern:
/^(?:\d{4}[-\s]?){3}\d{4}$/
Test Cases:
✅ マッチする:
- 1234 5678 9012 3456
- 1234-5678-9012-3456
- 1234567890123456
❌ マッチしない:
- 1234 5678 901 (短い)
- abcd-efgh-ijkl-mnop (英字)
Pattern Explanation Function
Input:
^(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d$
Output:
このパターンは **時刻(HH:MM:SS形式、24時間制)** にマッチします。
構造:
1. `^` - 文字列の開始
2. `(?:[01]\d|2[0-3])` - 時(00-23)
- `[01]\d` - 00-19
- `|` - または
- `2[0-3]` - 20-23
3. `:` - コロン(区切り)
4. `[0-5]\d` - 分(00-59)
5. `:` - コロン(区切り)
6. `[0-5]\d` - 秒(00-59)
7. `$` - 文字列の終了
マッチ例:
✅ 00:00:00
✅ 12:34:56
✅ 23:59:59
マッチしない例:
❌ 24:00:00 (24は無効)
❌ 12:60:00 (60分は無効)
❌ 1:2:3 (0埋めなし)
Optimization Function
Inefficient Pattern:
/^[0-9][0-9][0-9][0-9]$/
After Optimization:
/^\d{4}$/
Improvements:
[0-9]を\dReplace with (shorter and easier to read)- Express repetition with
{4}with {4}
Patterns by Language
JavaScript (ECMAScript)
const emailRegex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i;
const isValid = emailRegex.test(email);
Python
import re
email_pattern = r'^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$'
is_valid = re.match(email_pattern, email, re.IGNORECASE)
Java
String emailPattern = "^[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}$";
Pattern pattern = Pattern.compile(emailPattern, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(email);
boolean isValid = matcher.matches();
Version Information
- Skill version: 1.0.0
- Last updated: 2025-01-22
Usage Examples:
以下の要件で正規表現を生成:
- 日本の郵便番号(123-4567形式)
- ハイフンあり・なし両対応
- テストケース含む
Patterns, explanations, and test cases are generated!