FormulaProof · Evidence
Execution log
What happens to Müller, José, and 김재성 in a Google Sheets regex
| Cell | Formula | What Google returned |
|---|---|---|
| B1 | =REGEXMATCH("Muller","^\w+$") control: an ASCII surname is a word | TRUE |
| B2 | =REGEXMATCH("Müller","^\w+$") the same surname, spelled correctly One umlaut is the entire difference. | FALSE |
| B3 | =REGEXMATCH("Müller","^[A-Za-z]+$") the letter-range everyone writes instead of \w | FALSE |
| B4 | =REGEXMATCH("Smith","^[A-Za-z]+$") control: the same range on an ASCII surname | TRUE |
| B5 | =REGEXEXTRACT("Zürich, CH","^([A-Za-z]+)") pull the city out of a location field The formula that works on Zurich, Boston, and Leeds. This is the one that will be in a real spreadsheet. | Z |
| B6 | =REGEXEXTRACT("Zürich, CH","^(\w+)") the same extraction with \w instead | Z |
| B7 | =REGEXEXTRACT("José Álvarez","^\w+") first name from a full name | Jos |
| B8 | =REGEXMATCH("김재성","^\w+$") a Korean name | FALSE |
| B9 | =REGEXMATCH("Müller","^\p{L}+$") the Unicode letter class Google says is not supported Google's wording is 'except Unicode character class matching'. This is the exact construct that phrase describes. | #REF! |
| B10 | =REGEXMATCH("김재성","^\p{L}+$") the Unicode letter class on a Korean name | #REF! |
| B11 | =REGEXMATCH("MULLER","(?i)muller") control: case-insensitive matching on ASCII | TRUE |
| B12 | =REGEXMATCH("MÜLLER","(?i)müller") case-insensitive matching across an umlaut Ü and ü are the same letter to a person and to a sorting algorithm. The question is whether they are the same letter to this engine. | TRUE |
| B13 | =REGEXMATCH("İSTANBUL","(?i)istanbul") case-insensitive matching on a Turkish dotted capital | FALSE |
| B14 | =REGEXMATCH("é","^.$") does a dot match one accented character, or two of something | TRUE |
| B15 | =REGEXMATCH("é","^..$") or does it take two dots | FALSE |
| B16 | =REGEXEXTRACT("Straße","^.{3}") take the first three characters of a German word | Str |
| B17 | =REGEXREPLACE("Müller","[^\w]","") strip everything that is not a word character A tidy-up formula. It is supposed to remove punctuation. | Mller |
| B18 | =REGEXREPLACE("José","[^A-Za-z]","") the name-cleaning formula people actually paste | Jos |
| B19 | =REGEXREPLACE("Café ☕ 42","[^\d]","") strip everything that is not a digit, from a line with an emoji | 42 |
| B20 | =REGEXMATCH("café au lait","\bcafé\b") a word boundary next to an accented letter If é is not a word character, then the boundary falls in the middle of the word. | FALSE |
| B21 | =REGEXMATCH("123","^\d+$") are full-width digits digits These arrive from Japanese and Korean input methods, and from Excel files exported by them. | FALSE |
| B22 | =REGEXMATCH("١٢٣","^\d+$") are Arabic-Indic digits digits | FALSE |
| B23 | =REGEXMATCH("naïve","^[a-z]+$") lowercase range against a French word | FALSE |
| B24 | =REGEXMATCH("naïve","^[a-zà-ÿ]+$") the accent-insensitive range people try next A range over a block of Latin-1. Whether this is even a legal range depends on whether the engine reads the pattern as bytes or as characters. | TRUE |
Every row above was written into a real Google Sheet and read back through the Sheets API on 2026-07-11. 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.