FormulaProof · Evidence
Execution log
One backslash goes missing between the web page and the cell
| 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.