Form input patterns help check if what a user types matches a specific format. This makes sure the information is correct before sending it.
Form input patterns in Tailwind
<input type="text" pattern="your-regex-pattern" />
pattern attribute uses regular expressions to define the allowed input format.<input type="text" pattern="\d{3}-\d{2}-\d{4}" />
<input type="email" pattern=".+@example\.com" />
<input type="text" pattern="[A-Za-z]{5,10}" />
This form uses Tailwind CSS for styling. It has two inputs with patterns:
- Phone input requires exactly 3 digits, dash, 3 digits, dash, 4 digits.
- Email input requires the email to end with
@example.com.
If the user types something wrong and tries to submit, the browser will show a message and prevent submission.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Form Input Patterns Example</title> <script src="https://cdn.tailwindcss.com"></script> </head> <body class="bg-gray-50 flex items-center justify-center min-h-screen"> <main class="bg-white p-8 rounded shadow-md w-full max-w-md"> <h1 class="text-2xl font-semibold mb-6">Sign Up</h1> <form class="space-y-4"> <label for="phone" class="block text-sm font-medium text-gray-700">Phone (format: 123-456-7890)</label> <input id="phone" name="phone" type="text" pattern="\d{3}-\d{3}-\d{4}" required class="mt-1 block w-full rounded border border-gray-300 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500" aria-describedby="phone-desc" placeholder="123-456-7890" /> <p id="phone-desc" class="text-xs text-gray-500">Enter your phone number in the format shown.</p> <label for="email" class="block text-sm font-medium text-gray-700">Email (must end with @example.com)</label> <input id="email" name="email" type="email" pattern=".+@example\.com" required class="mt-1 block w-full rounded border border-gray-300 px-3 py-2 focus:outline-none focus:ring-2 focus:ring-blue-500" aria-describedby="email-desc" placeholder="user@example.com" /> <p id="email-desc" class="text-xs text-gray-500">Only emails ending with @example.com allowed.</p> <button type="submit" class="w-full bg-blue-600 text-white py-2 rounded hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500" > Submit </button> </form> </main> </body> </html>
Pattern matching only works when the form is submitted or when you check validity in JavaScript.
Use aria-describedby to connect inputs with instructions for better accessibility.
Always test your pattern carefully to avoid blocking valid input or allowing wrong input.
Use the pattern attribute to require specific input formats.
Patterns use regular expressions to define allowed characters and structure.
Tailwind CSS helps style inputs and focus states for a better user experience.
Practice
Solution
Step 1: Understand Tailwind border utility
Theborderclass adds a 1px solid border around an element, commonly used for inputs.Step 2: Identify other classes' purposes
bg-blue-500changes background color,text-centercenters text, andflexapplies flexbox layout, none add borders.Final Answer:
border -> Option DQuick Check:
Border around input = border [OK]
- Confusing background color with border
- Using layout classes instead of border
- Forgetting to add border class for input outlines
Solution
Step 1: Understand Tailwind rounding classes
rounded-lgapplies medium-large rounded corners to elements, suitable for inputs.Step 2: Check other options
rounded-fullmakes fully circular corners,rounded-noneremoves rounding, androunded-0is invalid in Tailwind.Final Answer:
rounded-lg -> Option AQuick Check:
Medium rounded corners = rounded-lg [OK]
- Using rounded-full for rectangular inputs
- Choosing invalid class rounded-0
- Confusing no rounding with rounded-none
<input type="text" class="border border-gray-400 p-2 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" />
Solution
Step 1: Analyze border and padding classes
border border-gray-400adds a gray border,p-2adds padding inside the input,rounded-mdrounds corners moderately.Step 2: Understand focus styles
focus:outline-noneremoves default outline,focus:ring-2 focus:ring-blue-500adds a blue ring around input on focus.Final Answer:
Input with gray border, padding, rounded corners, and blue ring on focus -> Option AQuick Check:
Focus ring + gray border + padding = Input with gray border, padding, rounded corners, and blue ring on focus [OK]
- Ignoring focus:ring classes
- Confusing border colors
- Assuming default outline remains
<input class="border-2 rounded focus:ring-blue-400 focus:ring" />
Solution
Step 1: Check border and rounding classes
border-2is valid for 2px border,roundedis valid for small rounding.Step 2: Analyze focus:ring usage
focus:ringrequires a size likefocus:ring-2to show ring thickness; missing size means no visible ring.Final Answer:
Incorrect use of focus:ring without ring size -> Option CQuick Check:
Focus:ring needs size like ring-2 [OK]
- Omitting ring size after focus:ring
- Thinking border-2 is invalid
- Assuming rounded is not a Tailwind class
- A border that changes color on focus
- Rounded corners
- Padding inside
- A shadow only on focus
Which Tailwind class combination achieves this best?
Solution
Step 1: Check border and focus color change
border border-gray-300sets default border,focus:border-blue-600changes border color on focus.Step 2: Verify rounding, padding, and shadow on focus
rounded-mdrounds corners,p-3adds padding,focus:ring-2 focus:ring-blue-600adds blue ring on focus, andfocus:shadow-lgadds shadow only on focus.Step 3: Compare other options
border-2 border-red-500 rounded-full p-1 focus:ring focus:ring-red-300 uses full rounding and no shadow, C lacks shadow and focus border color, D lacks focus effects.Final Answer:
border border-gray-300 rounded-md p-3 focus:border-blue-600 focus:ring-2 focus:ring-blue-600 focus:shadow-lg -> Option BQuick Check:
Focus border + shadow + padding + rounding = border border-gray-300 rounded-md p-3 focus:border-blue-600 focus:ring-2 focus:ring-blue-600 focus:shadow-lg [OK]
- Missing focus shadow effect
- Using rounded-full instead of moderate rounding
- Not changing border color on focus
Ready to prove it?
Pass the test and this pattern moves unknown
