Tutorial · Google Forms, Sheets & Excel

Google Form email validation, plus Google Sheets and Excel formulas

How to make Google Forms accept only well-formed email addresses, how to flag bad ones in Google Sheets and Excel, and how to find out which of them actually receive mail.

Updated October 10, 2026 · 8 min read

Google Forms response validation set to Text and Email, and a Google Sheets REGEXMATCH formula that marks invalid addresses FALSE

Google Form email validation is one rule on a Short answer question. What that rule can’t do is tell you whether the address works. This guide sets up the form, then gives tested formulas for flagging bad addresses in Google Sheets and Excel, and ends with checking which addresses can actually receive mail.

Collect email addresses in Google Forms

If you need the respondent’s own address, Google Forms can collect it for you instead of a question. In the form, open the Settings tab, click the arrow next to Responses, and under Collect email addresses choose one of two options (Google Docs Editors Help):

Google Forms email validation with response validation

For an email question, Google’s help on setting rules for your form gives these steps:

  1. Open the form and add a Short answer question.
  2. Click More (the three dots) on the question.
  3. Click Response validation.
  4. Choose the type of rule. For email, choose Text and the email option, which Google’s help describes as “Make sure the response is in email format text@example.com.”
  5. Optional: enter a message in the Custom error text field.

Google doesn’t document the exact rule behind the email option, and we couldn’t test it. If you want to control what is accepted, use a regular expression instead: in step 4, choose Regular expression, then Matches, and paste this pattern:

^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+([A-Za-z]{2,63}|xn--[A-Za-z0-9-]{2,59})$

It is the pattern from the email regex guide, rewritten without lookaheads. That matters because “Google products use RE2 for regular expressions” (REGEXMATCH help), and the RE2 syntax marks lookaheads such as (?=…) as not supported. Many email patterns found online rely on them. The pattern requires letters, digits or the allowed special characters before the @, dots only between characters, a domain with at least one dot, and a top-level domain of two or more letters (or an internationalized one in xn-- form). It doesn’t limit the length of the part before the @; the spreadsheet formulas below do.

Validate email addresses in Google Sheets

Form responses that end up in a sheet, imported lists and CRM exports all need the same check. Google Sheets has two functions for it.

ISEMAIL is built in: =ISEMAIL(A2) returns TRUE or FALSE. Google’s ISEMAIL help says it “checks if the value follows a commonly accepted format for email addresses but doesn’t verify its existence”. It doesn’t document which format, so we can’t tell you which edge cases it accepts.

REGEXMATCH lets you choose the rule. Put this in B2 and fill it down next to the addresses in column A:

=IFERROR(AND(LEN(A2)<=254, FIND("@",A2)<=65, REGEXMATCH(A2, "^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+([A-Za-z]{2,63}|xn--[A-Za-z0-9-]{2,59})$")), FALSE)

LEN caps the whole address at 254 characters, FIND keeps the part before the @ at 64 characters or fewer, and IFERROR turns the error that FIND gives for a value without an @ into FALSE. If your spreadsheet’s language settings use semicolons between function arguments, replace the commas between the arguments (not the ones inside the pattern).

To use a check as you type, select the column and open Data > Data validation > Add rule (Google Docs Editors Help). Under Criteria, pick the built-in valid-email option or the custom-formula option with the formula above; Google’s Apps Script reference lists these two criteria as “Requires that the input is in the form of an email address” and “Requires that the input makes the given formula evaluate to true” (DataValidationCriteria). Invalid input is rejected; under Advanced options, “If the data is invalid”, you can show a warning instead.

To highlight bad addresses that are already in the sheet, use the helper column with conditional formatting: select the addresses from A2 down, click Format > Conditional formatting, and under “Format cells if” choose Custom formula is (Google Docs Editors Help) with:

=AND($A2<>"", $B2=FALSE)

Validate email addresses in Excel

Which formula you use in Excel depends on your version.

Excel for Microsoft 365 (Windows and Mac) and Excel for the web have REGEXTEST, which uses the PCRE2 flavor. Microsoft notes that it checks “whether any part of supplied text matches”, so the ^ and $ anchors in the pattern are essential:

=IFERROR(AND(LEN(A2)<=254, FIND("@",A2)<=65, REGEXTEST(A2, "^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+([A-Za-z]{2,63}|xn--[A-Za-z0-9-]{2,59})\z")), FALSE)

The pattern ends with \z instead of $: in PCRE2, $ also matches before a line break at the very end, so a cell that ends with Alt+Enter or came from a CSV import would pass. (Google Sheets uses RE2, where $ already means the end of the text.)

All other versions can use a formula without regular expressions. It’s looser, but catches the common mistakes:

=IFERROR(AND(LEN(A2)<=254,LEN(A2)-LEN(SUBSTITUTE(A2,"@",""))=1,ISERROR(FIND(" ",A2)),ISERROR(FIND("..","."&SUBSTITUTE(A2,"@",".")&".")),ISNUMBER(FIND(".",A2,FIND("@",A2)))),FALSE)

What each part checks:

Microsoft’s own data validation help has a simpler email example, =ISNUMBER(FIND("@",B4)), which only checks for an @.

To enforce either formula on entry, select the cells, then on the Data tab, in the Data Tools group, select Data Validation. On the Settings tab, under Allow, choose Custom and enter the formula, written for the first selected cell. On the Error Alert tab, the style Stop makes users fix the entry; Warning lets them continue.

Two limits from Microsoft’s help on data validation: validation “is designed to show messages and prevent invalid entries only when users type data directly in a cell”, and “when data is copied or filled, the messages do not appear.” For pasted or imported lists, apply the rule and then use Data > Data Tools > Data Validation > Circle Invalid Data to mark the cells that break it.

Test results for the formulas

We couldn’t run Google Forms, Google Sheets or Excel for this guide, so we tested the parts separately: the regular expression with Go’s regexp package, which implements RE2 syntax, and with PCRE2 through grep -P, with identical results (grep reads line by line, so we checked the value ending in a line break with Perl, whose $ and \z work as in PCRE2); the LEN/FIND/IFERROR wrapper by reproducing the spreadsheet functions in Python; and the formula for other Excel versions in LibreOffice Calc 24.2.

AddressRegex formula (Sheets, Excel 365)Formula for other Excel versions
jane@example.com✓✓
jane+news@example.com✓✓
o'brien@example.ie✓✓
JANE@EXAMPLE.COM✓✓
jane@mail.example.co.uk✓✓
jane@example.xn--p1ai✓✓
jane@example✗✗
.jane@example.com✗✗
jane.@example.com✗✗
jane..doe@example.com✗✗
jane@.example.com✗✗
jane@example.com.✗✗
jane doe@example.com✗✗
jane@doe@example.com✗✗
jane@example,com✗✗
jane@✗✗
jane@example.c✗✓
jane@-example.com✗✓
jane@exa_mple.com✗✓
josé@example.com✗✓
65 characters before the @✗✓
jane@example.com + trailing space✗✗
jane@example.com + line break✗✓
Empty cell✗✗

The Google Forms pattern alone gives the same results as the regex formula except for the 65-character case, which it accepts. Trailing spaces are common in pasted lists, and a line break at the end slips through the formula for other Excel versions; =TRIM(CLEAN(A2)) in a helper column removes both before you check.

Check that the addresses actually exist

A formula can only say that jane.doe@example.com is shaped like an email address. It still bounces: example.com accepts no mail. Typos in real domains, deleted mailboxes and disposable inboxes look just as valid. To find those, each address has to be checked with its mail server.

curl https://api.emailvalidation.io/v1/bulk \
  -H "apikey: $EMAILVALIDATION_API_KEY" \
  -F file=@responses.csv \
  -F email_column=email

email_column names the column with the addresses (its header, or its position from 1). The answer is the queued job. When it has finished, GET /v1/bulk/{job_id}/results?format=csv returns your file with every original column plus 15 emailvalidation_* columns, ready to import back into Sheets or Excel. Cells that start with =, +, - or @ get a leading apostrophe so the spreadsheet doesn’t run them as formulas. Duplicates and invalid rows don’t use up requests. Large lists can take a day or longer, because every receiving mail server is checked; check the job about once a minute or pass a webhook_url. The email list cleaning service page has the details.

In the results, state is deliverable, undeliverable or unknown. Remove the undeliverable rows. Addresses on catch-all domains, which accept every address, come back as deliverable with the reason low_deliverability; see catch-all email for how to treat them.

For the same checks in code, see the guides for HTML forms and JSON Schema.

Sources

All checked October 10, 2026:

Validate email in other languages

Frequently asked questions

How do I validate an email address in Google Forms?

Use a Short answer question, click More (the three dots), choose Response validation, select Text and the email option. Google’s help describes this rule as making sure “the response is in email format”. For stricter checks, choose Regular expression and Matches with a pattern instead.

What is the regex for email validation in Google Forms?

Google products use RE2, which has no lookaheads, so many copied email patterns don’t work. This one does: ^[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(\.[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@([A-Za-z0-9]([A-Za-z0-9-]{0,61}[A-Za-z0-9])?\.)+([A-Za-z]{2,63}|xn--[A-Za-z0-9-]{2,59})$

How do I check if an email is valid in Google Sheets?

=ISEMAIL(A2) checks whether a value follows a common email format. For a rule you control, use REGEXMATCH with a pattern. Neither checks whether the mailbox exists; for that, run the list through a bulk email verifier.

Is there an email validation formula for Excel?

Yes. Excel for Microsoft 365 (Windows and Mac) and Excel for the web have REGEXTEST, which works with a pattern; in other versions, a formula built from FIND, SUBSTITUTE and LEN catches the common mistakes. Both are on this page, with test results.

Can Google Forms check that an email address exists?

No. Response validation only checks the format. To check the mailbox, verify the responses afterwards, with a bulk check of the response sheet or automatically for each new response through an integration.

Email validation API

Validate emails in your app

emailvalidation.io checks syntax, MX records and the mailbox over SMTP, flags disposable, role and free addresses and returns a quality score, in one request.

/v1/info Email validation API Read the documentation

100 free validations every month. No credit card required.

GET https://api.emailvalidation.io/v1/info?email=support@emailvalidation.io

{
  "email": "support@emailvalidation.io",
  "user": "support",
  "tag": "",
  "domain": "emailvalidation.io",
  "format_valid": true,
  "mx_found": true,
  "smtp_check": true,
  "catch_all": null,
  "role": true,
  "disposable": false,
  "free": false,
  "score": 0.64,
  "state": "deliverable",
  "reason": "valid_mailbox",
  "did_you_mean": ""
}

Keep reading

Start using our email validation software today!

Get 100 validations per month for free