Bird
Raised Fist0
PHPprogramming~10 mins

Character classes and quantifiers in PHP - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Character classes and quantifiers
Start
↓
Define regex pattern
↓
Input string
↓
Match regex
↓
Check character classes
↓
Apply quantifiers
↓
Return matches
↓
End
The program defines a regex pattern with character classes and quantifiers, then checks an input string for matches step-by-step.
Execution Sample
PHP
<?php
$pattern = '/[a-z]{2,4}\d+/';
$input = 'ab12 xyz123 abcdef456';
preg_match_all($pattern, $input, $matches);
print_r($matches[0]);
?>
This PHP code finds all substrings with 2 to 4 lowercase letters followed by one or more digits.
Execution Table
StepActionPattern PartInput SegmentMatch ResultOutput
1Define pattern[a-z]{2,4}\d+-Pattern ready-
2Input string-ab12 xyz123 abcdef456Input ready-
3Match attempt 1[a-z]{2,4}\d+ab12Matches 'ab12'['ab12']
4Match attempt 2[a-z]{2,4}\d+xyz123Matches 'xyz123'['ab12', 'xyz123']
5Match attempt 3[a-z]{2,4}\d+abcdef456No match (letters >4)['ab12', 'xyz123']
6End--Matching complete['ab12', 'xyz123']
💡 No more matches found; input fully scanned.
Variable Tracker
VariableStartAfter Step 3After Step 4After Step 5Final
$pattern/[a-z]{2,4}\d+//[a-z]{2,4}\d+//[a-z]{2,4}\d+//[a-z]{2,4}\d+//[a-z]{2,4}\d+/
$inputab12 xyz123 abcdef456ab12 xyz123 abcdef456ab12 xyz123 abcdef456ab12 xyz123 abcdef456ab12 xyz123 abcdef456
$matches[0][]['ab12']['ab12', 'xyz123']['ab12', 'xyz123']['ab12', 'xyz123']
Key Moments - 2 Insights
Why does 'abcdef456' not match the pattern even though it has letters followed by digits?
Because the pattern requires 2 to 4 lowercase letters ([a-z]{2,4}) before digits, but 'abcdef' has 6 letters, exceeding the quantifier limit. See execution_table row 5.
What does the quantifier '+' after \d mean in the pattern?
It means one or more digits must follow the letters. So at least one digit is required for a match. This is why 'ab12' and 'xyz123' match. See execution_table rows 3 and 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the value of $matches[0] after step 4?
A['ab12']
B['xyz123']
C['ab12', 'xyz123']
D[]
💡 Hint
Check the Output column at step 4 in execution_table.
At which step does the pattern fail to match due to too many letters?
AStep 3
BStep 5
CStep 4
DStep 6
💡 Hint
Look at the Match Result column where it says 'No match (letters >4)'.
If the quantifier {2,4} was changed to {3,5}, which input segment would fail to match?
A'ab12'
B'xyz123'
C'abcdef456'
DAll would match
💡 Hint
Check variable_tracker for $matches and consider letter counts in input segments.
Concept Snapshot
Character classes: [a-z] matches any lowercase letter.
Quantifiers: {2,4} means match 2 to 4 times.
+ means one or more times.
Together: [a-z]{2,4}\d+ matches 2-4 letters followed by digits.
Used in PHP with preg_match_all to find matches in strings.
Full Transcript
This example shows how PHP uses regex with character classes and quantifiers. The pattern '/[a-z]{2,4}\d+/' looks for substrings with 2 to 4 lowercase letters followed by one or more digits. The input string 'ab12 xyz123 abcdef456' is scanned. Matches found are 'ab12' and 'xyz123'. 'abcdef456' does not match because it has 6 letters, exceeding the {2,4} limit. The execution table traces each matching attempt step-by-step, showing how variables change. Key points include understanding quantifiers and why some substrings fail to match. The visual quiz tests understanding of these steps and pattern behavior.

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