Bird
Raised Fist0
Spring Bootframework~5 mins

@Email and @Pattern in Spring Boot - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What is the purpose of the @Email annotation in Spring Boot?
The @Email annotation checks if a string is a valid email address format. It helps ensure users enter proper emails in forms.
Click to reveal answer
beginner
How does the @Pattern annotation work in Spring Boot?
@Pattern validates a string against a regular expression (regex). It ensures the string matches a specific pattern you define.
Click to reveal answer
beginner
Example usage of @Email annotation in a Spring Boot model?
You add @Email(message = "Invalid email") above a String field to check email format. Example:
@Email(message = "Invalid email")
private String userEmail;
Click to reveal answer
intermediate
What happens if a string does not match the regex in @Pattern validation?
Spring Boot validation fails and returns an error message. You can customize the message with message = "Your message" in the annotation.
Click to reveal answer
intermediate
Can @Email and @Pattern be used together on the same field?
Yes, you can combine them to enforce email format and additional pattern rules. Both validations run and must pass for the input to be valid.
Click to reveal answer
What does the @Email annotation validate?
AIf a number is positive
BIf a string matches a regex pattern
CIf a string is a valid email format
DIf a field is not null
Which annotation uses a regular expression to validate a string?
A@Size
B@Email
C@NotNull
D@Pattern
How do you customize the error message shown when @Pattern validation fails?
ABy overriding <code>toString()</code>
BUsing <code>message</code> attribute in <code>@Pattern</code>
CUsing <code>@ErrorMessage</code> annotation
DYou cannot customize it
Can @Email annotation alone guarantee the email domain is real?
ANo, it only checks format
BYes, it checks domain existence
CYes, it sends a verification email
DNo, it checks only length
If you want to ensure a string contains only digits, which annotation is best?
A@Pattern(regexp = "\\d+")
B@Size(min=1)
C@NotNull
D@Email
Explain how you would use @Email and @Pattern annotations to validate a user input field in Spring Boot.
Think about combining format checks and pattern rules on the same field.
You got /4 concepts.
    What are the limitations of @Email validation and how can @Pattern help overcome them?
    Consider what @Email does not check and how regex can add control.
    You got /4 concepts.

      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