The cell holds a note, a signature block, or a pasted CRM record. Somewhere inside it there is a phone number, and you want it in its own column.
Every tutorial hands you the same regex. It works on the clean sample and then falls over on your actual sheet.
The Old Way (REGEXEXTRACT)
The standard pattern assumes the North American dashed format and nothing else.
=REGEXEXTRACT(A2, "\d{3}-\d{3}-\d{4}")Feed it this real-world cell value:
Direct line: +1 (555) 019-2834 ext. 402You get #N/A. The parentheses around the area code and the country code prefix both break the match, and the extension never gets captured at all.
So you loosen the pattern to accept any run of digits and separators.
=REGEXEXTRACT(A2, "[\d\(\)\-\+\s\.]{10,}")Now run it against a cell that has other numbers in it.
Order #1004562890 updated on 2026-08-03, call 555-019-2834It returns 1004562890 updated on 2026-08-03, because the loosened character class greedily swallows the order number and the date before it ever reaches the phone number.
There is a deeper limit here. Google Sheets runs the RE2 regex engine, which has no lookarounds. You cannot strip parentheses, spaces, and dashes down to clean digits inside a single REGEXEXTRACT call. That needs nested REGEXREPLACE steps. And REGEXEXTRACT only ever returns the first match, so a cell with a mobile and an office number silently loses one.
The FITS Way (Describe the Number)
FITS does not need the shape. It needs the job.
=FITS("Extract the phone number from this text. Return digits only, no punctuation. Return blank if there is no phone number: " & A2)That formula handles the parentheses cell, the country code cell, and the order number cell with the same instruction. The order number is not a phone number, so it does not come back.
If you want the extension kept separate, ask for it separately.
=FITS("Return just the phone extension from this text, or blank if there is none: " & A2)For cells that hold more than one number, name which one you want.
=FITS("This text may list several phone numbers. Return only the mobile number, digits only: " & A2)And if you want it normalized to E.164 on the way out, that is one more clause rather than a second nested formula.
=FITS("Extract the phone number and return it in E.164 format, assuming US if no country code is given: " & A2)One formula, filled down the column. No REGEXREPLACE chain and no IFERROR wrapper hiding the misses.
When to Use Each
If every cell in the column is already a bare number in one consistent format, REGEXEXTRACT is free and instant. Reach for =FITS() when the numbers are buried in prose, when formats are mixed, or when other digits live in the same cell. The same approach covers the neighbouring jobs: formatting phone numbers you already have, separating first and last names, and extraction from genuinely messy data. The full tour is in automating Google Sheets tasks you used to need regex for.
Stop Guessing at Phone Formats
FITS puts plain-English AI formulas inside Google Sheets. Describe the number you want and get it, whatever shape it arrived in. Free tier included.