Bird
Raised Fist0
PHPprogramming~15 mins

Character classes and quantifiers in PHP - Mini Project: Build & Apply

Choose your learning style10 modes available
Character classes and quantifiers
📖 Scenario: You are working on a simple PHP script to check if certain words match a pattern. This is useful when you want to find words that follow specific rules, like starting with a vowel or having a certain number of letters.
🎯 Goal: Build a PHP script that uses regular expressions with character classes and quantifiers to find words that start with a vowel and have exactly 5 letters.
📋 What You'll Learn
Create a list of words in a PHP array called $words with the exact values: 'apple', 'banana', 'grape', 'orange', 'pear', 'peach'
Create a variable called $pattern that holds a regular expression to match words starting with a vowel (a, e, i, o, u) and having exactly 5 letters
Use a foreach loop with the variable $word to go through each word in $words
Inside the loop, use preg_match with $pattern and $word to check if the word matches the pattern
Print each matching word on its own line using echo
💡 Why This Matters
🌍 Real World
Regular expressions help filter and find text patterns in data, like validating user input or searching documents.
💼 Career
Knowing how to use character classes and quantifiers in regex is useful for web developers, data analysts, and anyone working with text processing.
Progress0 / 4 steps
1
Create the list of words
Create a PHP array called $words with these exact words: 'apple', 'banana', 'grape', 'orange', 'pear', 'peach'
PHP
Hint

Use square brackets [] to create an array and separate words with commas.

2
Create the regular expression pattern
Create a variable called $pattern that holds the regular expression '/^[aeiou]\w{4}$/' to match words starting with a vowel and having exactly 5 letters
PHP
Hint

The pattern starts with ^ for start of word, then a character class [aeiou] for vowels, then \w{4} for exactly 4 word characters, and $ for end of word. Use the i modifier for case-insensitive matching.

3
Check each word with the pattern
Use a foreach loop with variable $word to go through $words. Inside the loop, use preg_match($pattern, $word) to check if the word matches the pattern.
PHP
Hint

Use foreach ($words as $word) to loop and preg_match($pattern, $word) to test each word.

4
Print the matching words
Inside the if block, use echo $word . "\n"; to print each matching word on its own line.
PHP
Hint

Use echo $word . "\n"; to print each word on a new line.

Practice

(1/5)
1. Which character class in PHP regex matches any digit from 0 to 9?
/[?]/
easy
A. \\D
B. \\w
C. \\s
D. \\d

Solution

  1. Step 1: Understand character classes

    In PHP regex, \\d matches any digit (0-9), \\w matches word characters, \\s matches whitespace, and \\D matches non-digits.
  2. Step 2: Identify the digit matcher

    The class that matches digits is \\d.
  3. Final Answer:

    \\d -> Option D
  4. Quick Check:

    Digits = \\d [OK]
Hint: Remember: \d = digit, \w = word, \s = space [OK]
Common Mistakes:
  • Confusing \d with \w
  • Using \D to match digits
  • Mixing up \s with digit class
2. Which of the following is the correct syntax to match exactly three lowercase letters using PHP regex?
easy
A. /[a-z]{3}/
B. /[a-z]{,3}/
C. /[a-z]{3,}/
D. /[a-z]{3,5}/

Solution

  1. Step 1: Understand quantifiers

    Curly braces {n} specify exact count. {3} means exactly 3 times.
  2. Step 2: Match exactly three lowercase letters

    The pattern /[a-z]{3}/ matches exactly three lowercase letters.
  3. Final Answer:

    /[a-z]{3}/ -> Option A
  4. Quick Check:

    Exact 3 lowercase letters = /[a-z]{3}/ [OK]
Hint: Use {n} for exact count in regex quantifiers [OK]
Common Mistakes:
  • Using {,3} which is invalid syntax
  • Using {3,} which means 3 or more
  • Using {3,5} which means 3 to 5 times
3. What will be the output of this PHP code?
$pattern = '/\d{2,4}/';
$string = 'Year 2023 and 99 problems';
preg_match_all($pattern, $string, $matches);
print_r($matches[0]);
medium
A. ["20", "23", "99"]
B. ["2023", "99"]
C. ["202", "3", "99"]
D. ["2", "0", "2", "3", "9", "9"]

Solution

  1. Step 1: Understand the regex pattern

    The pattern /\d{2,4}/ matches sequences of digits between 2 and 4 digits long.
  2. Step 2: Apply pattern to string

    In 'Year 2023 and 99 problems', '2023' (4 digits) and '99' (2 digits) match. Smaller digit groups like '2' or '3' alone do not match.
  3. Final Answer:

    ["2023", "99"] -> Option B
  4. Quick Check:

    Digits 2-4 long = ["2023", "99"] [OK]
Hint: Quantifier {2,4} matches digit groups length 2 to 4 [OK]
Common Mistakes:
  • Splitting digits into smaller groups
  • Ignoring quantifier range
  • Assuming single digits match
4. Identify the error in this PHP regex pattern:
$pattern = '/[a-z]{2,1}/';
medium
A. Quantifier range is invalid; min cannot be greater than max
B. Character class brackets are missing
C. Pattern should use double quotes instead of single quotes
D. No error; pattern is valid

Solution

  1. Step 1: Analyze quantifier syntax

    The quantifier {2,1} means minimum 2 and maximum 1 repetitions, which is invalid because min > max.
  2. Step 2: Confirm error type

    Regex quantifiers must have min ≤ max. This causes a syntax error.
  3. Final Answer:

    Quantifier range is invalid; min cannot be greater than max -> Option A
  4. Quick Check:

    Min > max in {2,1} is invalid [OK]
Hint: Quantifier {min,max} must have min ≤ max [OK]
Common Mistakes:
  • Swapping min and max values
  • Ignoring quantifier syntax rules
  • Assuming pattern is valid without checking quantifiers
5. You want to match a string that contains exactly 3 to 5 uppercase letters followed by 2 digits in PHP regex. Which pattern is correct?
hard
A. /^[A-Z]{3,5}\d{1,2}$/
B. /^[A-Z]{2,3}\d{5}$/
C. /^[A-Z]{3,5}\d{2}$/
D. /^[A-Z]{3,5}\d{3}$/

Solution

  1. Step 1: Understand the requirements

    The string must start (^) with 3 to 5 uppercase letters [A-Z]{3,5} and end ($) with exactly 2 digits \d{2}.
  2. Step 2: Match pattern to options

    /^[A-Z]{3,5}\d{2}$/ matches exactly 3-5 uppercase letters followed by exactly 2 digits, anchored start and end.
  3. Final Answer:

    /^[A-Z]{3,5}\d{2}$/ -> Option C
  4. Quick Check:

    3-5 uppercase + 2 digits = /^[A-Z]{3,5}\d{2}$/ [OK]
Hint: Use anchors ^ and $ to match whole string exactly [OK]
Common Mistakes:
  • Mixing digit counts in quantifiers
  • Omitting anchors causing partial matches
  • Using wrong quantifier ranges
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard