Bird
Raised Fist0
React Nativemobile~5 mins

Form validation patterns in React Native

Choose your learning style10 modes available
Introduction

Form validation helps check if the user entered the right information before sending it. It stops mistakes and makes apps easier to use.

When asking users to sign up or log in with email and password.
When collecting phone numbers or addresses in a form.
When making sure a required field is not left empty.
When checking if a password is strong enough.
When confirming that two password fields match.
Syntax
React Native
const validate = (value) => {
  if (!value) return 'Field is required';
  if (value.length < 3) return 'Too short';
  return '';
};

Validation functions usually take the input value and return an error message or empty string.

You can use simple if checks or regular expressions for patterns.

Examples
This checks if the email is empty or does not match a simple email pattern.
React Native
const validateEmail = (email) => {
  const regex = /^[\w.-]+@[\w-]+\.[a-z]{2,}$/i;
  if (!email) return 'Email is required';
  if (!regex.test(email)) return 'Invalid email';
  return '';
};
This ensures the password is not empty and has at least 6 characters.
React Native
const validatePassword = (password) => {
  if (!password) return 'Password is required';
  if (password.length < 6) return 'Password too short';
  return '';
};
This compares two password fields to make sure they are the same.
React Native
const validateConfirmPassword = (password, confirm) => {
  if (confirm !== password) return 'Passwords do not match';
  return '';
};
Sample App

This React Native app has an email input and a submit button. When you press submit, it checks if the email is empty or wrong. If valid, it shows an alert. If not, it shows an error message in red below the input.

React Native
import React, { useState } from 'react';
import { View, TextInput, Text, Button, Alert } from 'react-native';

export default function App() {
  const [email, setEmail] = useState('');
  const [error, setError] = useState('');

  const validateEmail = (value) => {
    const regex = /^[\w.-]+@[\w-]+\.[a-z]{2,}$/i;
    if (!value) return 'Email is required';
    if (!regex.test(value)) return 'Invalid email';
    return '';
  };

  const handleSubmit = () => {
    const errorMsg = validateEmail(email);
    setError(errorMsg);
    if (!errorMsg) {
      Alert.alert('Success', 'Email is valid!');
    }
  };

  return (
    <View style={{ padding: 20 }}>
      <TextInput
        placeholder="Enter your email"
        value={email}
        onChangeText={setEmail}
        keyboardType="email-address"
        autoCapitalize="none"
        style={{ borderWidth: 1, borderColor: '#ccc', padding: 10, marginBottom: 5 }}
        accessibilityLabel="Email input"
      />
      {error ? <Text style={{ color: 'red' }}>{error}</Text> : null}
      <Button title="Submit" onPress={handleSubmit} accessibilityLabel="Submit button" />
    </View>
  );
}
OutputSuccess
Important Notes

Always give clear error messages so users know what to fix.

Validate on submit or as the user types for better experience.

Use accessibility labels so screen readers can describe inputs and errors.

Summary

Form validation checks user input to prevent mistakes.

Use simple functions to return error messages or empty strings.

Show errors clearly and use accessibility features for all users.

Practice

(1/5)
1. What is the main purpose of form validation in a React Native app?
easy
A. To check user input and show errors if needed
B. To change the app's theme colors
C. To speed up the app loading time
D. To add animations to buttons

Solution

  1. Step 1: Understand form validation role

    Form validation is used to check if user input is correct or complete.
  2. Step 2: Identify the correct purpose

    Only To check user input and show errors if needed describes checking input and showing errors, which is the main goal.
  3. Final Answer:

    To check user input and show errors if needed -> Option A
  4. Quick Check:

    Form validation = check input and show errors [OK]
Hint: Form validation means checking input for mistakes [OK]
Common Mistakes:
  • Confusing validation with UI styling
  • Thinking validation speeds app loading
  • Mixing validation with animations
2. Which of the following is the correct way to define a simple validation function in React Native?
easy
A. validate = (text) => { text.length > 0 ? 'Error' : ''; }
B. function validate(text) { return text.length < 0 ? 'Error' : ''; }
C. const validate = (text) => text.length > 0 ? '' : 'Required';
D. const validate = text => { if text.length = 0 return 'Error'; }

Solution

  1. Step 1: Check syntax correctness

    const validate = (text) => text.length > 0 ? '' : 'Required'; uses correct arrow function syntax and returns empty string if valid.
  2. Step 2: Identify logical correctness

    const validate = (text) => text.length > 0 ? '' : 'Required'; returns 'Required' if text is empty, which is expected behavior.
  3. Final Answer:

    const validate = (text) => text.length > 0 ? '' : 'Required'; -> Option C
  4. Quick Check:

    Correct arrow function with conditional return = const validate = (text) => text.length > 0 ? '' : 'Required'; [OK]
Hint: Arrow functions with conditional return are common for validation [OK]
Common Mistakes:
  • Using assignment '=' instead of comparison '==' or '==='
  • Missing return statements in function
  • Incorrect arrow function syntax
3. Given this code snippet, what will be the value of error after calling validate('')?
const validate = (text) => {
  if (text.trim() === '') {
    return 'Field cannot be empty';
  }
  return '';
};
const error = validate('');
medium
A. null
B. '' (empty string)
C. undefined
D. 'Field cannot be empty'

Solution

  1. Step 1: Analyze the input to validate function

    The input is an empty string ''. The trim() method removes spaces but here input is already empty.
  2. Step 2: Follow the if condition logic

    Since text.trim() === '', the function returns 'Field cannot be empty'.
  3. Final Answer:

    'Field cannot be empty' -> Option D
  4. Quick Check:

    Empty input triggers error message [OK]
Hint: Empty strings trigger error messages in validation [OK]
Common Mistakes:
  • Assuming empty string returns empty error
  • Ignoring trim() effect
  • Confusing return values
4. Identify the error in this validation function:
const validateEmail = (email) => {
  if (!email.includes('@')) {
    'Invalid email';
  }
  return '';
};
medium
A. Missing return statement inside if block
B. Using includes() is incorrect for email validation
C. Function should be async
D. Return statement should be outside the function

Solution

  1. Step 1: Check if error message is returned

    The if block has a string 'Invalid email' but no return keyword, so it does nothing.
  2. Step 2: Understand function flow

    Because no return in if, function always returns empty string, ignoring errors.
  3. Final Answer:

    Missing return statement inside if block -> Option A
  4. Quick Check:

    Return missing in if block causes no error shown [OK]
Hint: Always return error messages inside conditions [OK]
Common Mistakes:
  • Forgetting return keyword in if block
  • Assuming string alone returns value
  • Misusing async when not needed
5. You want to validate a password field that must be at least 8 characters and contain a number. Which validation function correctly implements this?
hard
A. const validatePassword = (pwd) => pwd.length >= 8 || /\d/.test(pwd) ? '' : 'Password must be 8+ chars and include a number';
B. const validatePassword = (pwd) => { if (pwd.length < 8) return 'Too short'; if (!/\d/.test(pwd)) return 'No number'; return ''; };
C. const validatePassword = (pwd) => { if (pwd.length > 8 || /\d/.test(pwd)) return ''; else return 'Invalid'; };
D. const validatePassword = (pwd) => pwd.length > 8 && /\d/.test(pwd) ? 'Valid' : 'Invalid';

Solution

  1. Step 1: Check each condition separately

    const validatePassword = (pwd) => { if (pwd.length < 8) return 'Too short'; if (!/\d/.test(pwd)) return 'No number'; return ''; }; checks length first, returns 'Too short' if less than 8, then checks for number, returns 'No number' if missing.
  2. Step 2: Confirm final return for valid password

    If both conditions pass, it returns empty string meaning no error, which is correct.
  3. Final Answer:

    const validatePassword = (pwd) => { if (pwd.length < 8) return 'Too short'; if (!/\d/.test(pwd)) return 'No number'; return ''; }; -> Option B
  4. Quick Check:

    Separate checks with returns for each error = const validatePassword = (pwd) => { if (pwd.length < 8) return 'Too short'; if (!/\d/.test(pwd)) return 'No number'; return ''; }; [OK]
Hint: Check each rule separately and return specific errors [OK]
Common Mistakes:
  • Using OR instead of AND for conditions
  • Returning success message instead of empty string
  • Combining conditions incorrectly
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