Back to Blog
Developer Tools

Regex for Indian Phone Numbers โ€” Validate Mobile and Landline Numbers

2026-06-03 5 min read

Indian phone numbers have specific patterns for mobile (10 digits starting with 6-9) and landline (STD code + number). Here are the right regex patterns.

Validating Indian phone numbers with regex is tricky because of the variety of formats in use. Numbers might come with country codes, with spaces, with hyphens, or with nothing extra at all. Here's a pattern that handles the common cases.

Indian mobile number rules

Indian mobile numbers are 10 digits and always start with 6, 7, 8, or 9. That's the core rule. Landline numbers have an STD code followed by the local number, making the total vary by city.

For mobile numbers specifically:

// Basic 10-digit mobile validation
const mobileRegex = /^[6-9]d{9}$/;

mobileRegex.test("9876543210")  // true
mobileRegex.test("1234567890")  // false (doesn't start with 6-9)
mobileRegex.test("98765432")    // false (8 digits)
mobileRegex.test("98765432101") // false (11 digits)

Handling country code prefix

Users often type or paste numbers with +91 or 91 at the start. Extend the pattern to handle that:

// Accepts: 9876543210, +919876543210, 919876543210, 0919876543210
const indianPhoneRegex = /^(?:(?:+|0{0,2})91[s-]?)?[6-9]d{9}$/;

indianPhoneRegex.test("9876543210")       // true
indianPhoneRegex.test("+919876543210")    // true
indianPhoneRegex.test("919876543210")     // true
indianPhoneRegex.test("+91 98765 43210")  // true (spaces allowed)
indianPhoneRegex.test("+44 7911 123456")  // false (UK number)

Normalizing before validation

Often the cleanest approach is to strip formatting first, then validate the cleaned number:

function validateIndianMobile(input) {
  // Remove spaces, hyphens, parentheses, +91 or 91 prefix
  const cleaned = input
    .replace(/s|-|(|)/g, "")   // remove formatting
    .replace(/^(+91|91|0{1,2}91)/, ""); // remove country code

  return /^[6-9]d{9}$/.test(cleaned);
}

validateIndianMobile("+91 98765-43210") // true
validateIndianMobile("0091-9876543210") // true
validateIndianMobile("1234567890")      // false

Number series by operator

If you need to distinguish operator-specific series, note that:

  • Series starting 6x are typically newer allocations (Jio, Airtel, BSNL)
  • Series starting 7x, 8x, 9x cover all major operators
  • Number portability makes operator detection unreliable anyway

Test these patterns live with our Regex Tester.

regex phone india mobile validation

More Articles