=FormulaProof
1

FormulaProof · Evidence

Execution log

One backslash goes missing between the web page and the cell

Ran
Engine
Google Sheets (live, via Sheets API v4)
Locale
en_US
Host
Windows_NT 10.0.26200 · Node v24.15.0
Result
22 of 22 as expected
Cell Formula What Google returned
B1 =REGEXEXTRACT("Order 4821","\d+")

intact: pull the number out of an order line

4821
B2 =REGEXEXTRACT("Order 4821","d+")

one backslash gone: the same formula, still green

'Order' contains a d. There is something for the pattern to find, so there is nothing for Sheets to complain about.

d
B3 =REGEXMATCH("4821","^\d+$")

intact: is this cell a whole number?

TRUE
B4 =REGEXMATCH("4821","^d+$")

one backslash gone: is this cell a whole number?

FALSE
B5 =REGEXREPLACE("Jane Doe","\s+"," ")

intact: collapse repeated spaces

Jane Doe
B6 =REGEXREPLACE("Jane Doe","s+"," ")

one backslash gone: collapse repeated spaces

REGEXREPLACE returns the original string when nothing matches. A function that does nothing is indistinguishable from a function that had nothing to do.

Jane Doe
B7 =REGEXMATCH("12.50","^\d+\.\d{2}$")

intact: does this look like money?

TRUE
B8 =REGEXMATCH("12.50","^d+.d{2}$")

both backslashes gone: does this look like money?

FALSE
B9 =REGEXMATCH("12.50","^d+\.d{2}$")

only the escape on the dot survives

Backslashes do not vanish as a set. Whichever one a text pipeline eats is the one that decides the answer.

FALSE
B10 =REGEXMATCH("(draft)","^\(draft\)$")

intact: is this row marked as a draft?

TRUE
B11 =REGEXMATCH("(draft)","^(draft)$")

both backslashes gone: the parentheses become a capture group

Still a valid pattern. It now asks whether the cell is the word draft, which it is not.

FALSE
B12 =REGEXMATCH("margin 50%)","\)$")

intact: does the line end in a closing bracket?

TRUE
B13 =REGEXMATCH("margin 50%)",")$")

one backslash gone: an unmatched bracket

This is the case we expect to fail loudly, and the reason the others are dangerous.

#REF!
B14 =REGEXEXTRACT("Total: $1,240.00","\$[\d,]+\.\d{2}")

intact: extract a formatted total

$1,240.00
B15 =REGEXEXTRACT("Total: $1,240.00","$[d,]+.d{2}")

every backslash gone: the dollar sign becomes an anchor

#N/A
B16 =REGEXREPLACE("2026-07-09","(\d{4})-(\d{2})-(\d{2})","$3/$2/$1")

intact: reformat an ISO date as day/month/year

09/07/2026
B17 =REGEXREPLACE("2026-07-09","(d{4})-(d{2})-(d{2})","$3/$2/$1")

every backslash gone: the date comes back unreformatted

The output is still a date. It is still the date in the cell. A column of these looks like a column that has not been converted yet, not like a column that is broken.

2026-07-09
B18 =REGEXMATCH("the cat sat","\bcat\b")

intact: whole-word match

TRUE
B19 =REGEXMATCH("the cat sat","bcatb")

both backslashes gone: whole-word match

FALSE
B20 =REGEXMATCH("Order 4821","\\d+")

the other direction: a pipeline that escapes instead of eating

Some editors double a backslash rather than remove it. The pattern now looks for a literal backslash followed by a d.

FALSE
B21 =REGEXMATCH("3.14","3\\.14")

a doubled backslash before a dot

FALSE
B22 =REGEXMATCH("URGENT: ship today","^URGENT")

the control: a pattern with no backslash at all is unharmed

Patterns that survive the trip are the ones that never needed a backslash. This is why simple examples in tutorials appear to work.

TRUE

Every row above was written into a real Google Sheet and read back through the Sheets API on 2026-07-10. The case file and this log are in the repository, and the build refuses to run if they disagree.

Why this page exists

Anyone can write that lookahead does not work in Google Sheets. It is in Google's documentation, one link away, and a language model will tell you the same thing in a second.

What almost nobody does is run it. So this page is the run. Each formula above was written into a cell through the Sheets API, and the value in the third column is what came back — not what we expected, not what the documentation says, not what a model predicted.

Some rows are marked observed. Those are cases where we did not know the answer beforehand, so we measured instead of asserting. Guessing and then presenting the guess as a finding is exactly the failure mode this site was built to avoid.

If any formula here changes what it does, the log goes stale and the site refuses to build. Tell us if you find one that is wrong before we do.