Bird
Raised Fist0
Spring Bootframework~10 mins

@Email and @Pattern in Spring Boot - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to validate an email field using the correct annotation.

Spring Boot
public class User {
    @[1]
    private String email;
}
Drag options to blanks, or click blank then click option'
ASize
BPattern
CNotNull
DEmail
Attempts:
3 left
💡 Hint
Common Mistakes
Using @Pattern without a regex for email.
Using @NotNull which only checks for null values.
2fill in blank
medium

Complete the code to validate a username with only letters and digits using @Pattern.

Spring Boot
public class User {
    @Pattern(regexp = "[1]")
    private String username;
}
Drag options to blanks, or click blank then click option'
A^[a-zA-Z0-9]+$
B^\\d+$
C^[a-z]+$
D^.+$"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a regex that allows special characters.
Forgetting to use anchors ^ and $.
3fill in blank
hard

Fix the error in the @Pattern regex to allow emails with dots and dashes.

Spring Boot
public class User {
    @Pattern(regexp = "[1]")
    private String email;
}
Drag options to blanks, or click blank then click option'
A^[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z]+$
B^[a-zA-Z0-9]+@[a-zA-Z0-9]+$
C^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$
D^[a-zA-Z0-9]+$"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a regex that does not allow dots or dashes.
Using a regex that does not validate the domain properly.
4fill in blank
hard

Fill both blanks to validate a password with at least 8 characters and only letters and digits.

Spring Boot
public class User {
    @Pattern(regexp = "[1]")
    @Size(min = [2])
    private String password;
}
Drag options to blanks, or click blank then click option'
A^[a-zA-Z0-9]+$
B8
C6
D^[a-z]+$"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a regex that allows special characters.
Setting the minimum size too low.
5fill in blank
hard

Fill all three blanks to validate a phone number with exactly 10 digits using @Pattern and @Size.

Spring Boot
public class User {
    @Pattern(regexp = "[1]")
    @Size(min = [2], max = [3])
    private String phoneNumber;
}
Drag options to blanks, or click blank then click option'
A^\\d+$
B10
D^[a-zA-Z]+$"
Attempts:
3 left
💡 Hint
Common Mistakes
Using a regex that allows letters.
Setting min and max size differently.

Practice

(1/5)
1. What is the primary purpose of the @Email annotation in Spring Boot validation?
easy
A. To convert a string to lowercase
B. To check if a string matches a custom regular expression
C. To ensure a string is not empty
D. To check if a string is a valid email format

Solution

  1. Step 1: Understand the role of @Email

    The @Email annotation is designed to validate that a string looks like a proper email address format.
  2. Step 2: Compare with other annotations

    @Pattern is used for custom regex, @NotEmpty ensures non-empty, and no annotation converts case automatically.
  3. Final Answer:

    To check if a string is a valid email format -> Option D
  4. Quick Check:

    @Email = Valid email format [OK]
Hint: Remember: @Email checks email format only [OK]
Common Mistakes:
  • Confusing @Email with @Pattern for custom regex
  • Thinking @Email checks if field is empty
  • Assuming @Email changes string content
2. Which of the following is the correct way to use @Pattern to allow only digits in a Spring Boot entity field?
easy
A. @Pattern(regex = "\\d+")
B. @Pattern(regexp = "\\d+")
C. @Pattern(pattern = "[0-9]*")
D. @Pattern(regexp = "[a-zA-Z]+")

Solution

  1. Step 1: Check the correct attribute name

    The correct attribute for @Pattern is regexp, not regex or pattern.
  2. Step 2: Validate the regex for digits

    The regex \\d+ matches one or more digits. @Pattern(regexp = "\\d+") uses correct syntax and regex.
  3. Final Answer:

    @Pattern(regexp = "\\d+") -> Option B
  4. Quick Check:

    @Pattern uses regexp attribute [OK]
Hint: Use regexp attribute, not regex or pattern [OK]
Common Mistakes:
  • Using 'regex' instead of 'regexp' attribute
  • Using incorrect regex syntax
  • Confusing @Pattern attribute names
3. Given this Spring Boot entity field:
@Email
@Pattern(regexp = ".+@example\\.com$")
private String email;

What happens if the user inputs user@test.com?
medium
A. Validation fails because email does not end with @example.com
B. Validation passes because it is a valid email
C. Validation fails because @Email and @Pattern cannot be used together
D. Validation passes because @Pattern is ignored

Solution

  1. Step 1: Understand @Email validation

    @Email checks if the input looks like an email. 'user@test.com' is a valid email format, so it passes this check.
  2. Step 2: Understand @Pattern validation

    @Pattern requires the email to end with '@example.com'. 'user@test.com' ends with '@test.com', so it fails this pattern check.
  3. Final Answer:

    Validation fails because email does not end with @example.com -> Option A
  4. Quick Check:

    @Pattern restricts domain, so input fails [OK]
Hint: Both @Email and @Pattern must pass for validation [OK]
Common Mistakes:
  • Assuming @Email alone validates domain
  • Thinking @Pattern is ignored if @Email passes
  • Believing @Email and @Pattern conflict
4. Consider this code snippet in a Spring Boot entity:
@Email
@Pattern(regexp = "[a-zA-Z]+")
private String userEmail;

Why might this validation cause unexpected failures for typical emails?
medium
A. Because the regex only allows letters, blocking digits and symbols in emails
B. Because @Email does not allow uppercase letters
C. Because @Pattern requires the field to be empty
D. Because @Email and @Pattern cannot be used on the same field

Solution

  1. Step 1: Analyze the regex pattern

    The regex [a-zA-Z]+ allows only letters, no digits, dots, or @ symbols which are common in emails.
  2. Step 2: Understand impact on email validation

    This pattern blocks valid email characters like digits, dots, and '@', causing valid emails to fail validation.
  3. Final Answer:

    Because the regex only allows letters, blocking digits and symbols in emails -> Option A
  4. Quick Check:

    Regex must allow email characters [OK]
Hint: Regex must include all valid email characters [OK]
Common Mistakes:
  • Assuming @Email restricts uppercase letters
  • Thinking @Pattern requires empty field
  • Believing @Email and @Pattern conflict
5. You want to validate a Spring Boot entity field so it accepts only emails from mycompany.com domain. Which annotation setup is correct?
hard
A. @Pattern(regexp = ".+@mycompany\\.com$")
B. @Email(regexp = ".+@mycompany\\.com$")
C. @Email @Pattern(regexp = ".+@mycompany\\.com$")
D. @Email @Pattern(regexp = "^mycompany.com$")

Solution

  1. Step 1: Use @Email for email format validation

    @Email ensures the string is a valid email format regardless of domain.
  2. Step 2: Use @Pattern to restrict domain

    @Pattern with regex .+@mycompany\\.com$ ensures the email ends with '@mycompany.com'.
  3. Step 3: Check other options

    @Email(regexp = ".+@mycompany\\.com$") is invalid because @Email does not accept regexp attribute. @Pattern(regexp = ".+@mycompany\\.com$") misses email format check. @Email @Pattern(regexp = "^mycompany.com$") regex is incorrect for email domain.
  4. Final Answer:

    @Email @Pattern(regexp = ".+@mycompany\\.com$") -> Option C
  5. Quick Check:

    Combine @Email and @Pattern for domain restriction [OK]
Hint: Use @Email plus @Pattern with domain regex [OK]
Common Mistakes:
  • Trying to put regexp inside @Email
  • Using incomplete regex that misses email format
  • Incorrect regex anchors for domain