Я думаю, что регулярное выражение не является хорошим подходом для проверки на наличие опечаток и похожих строк. Я хотел бы рассмотреть что-то вроде Левенштейна - PHP даже имеет встроенную функцию для этого, levenshtein
.
РЕДАКТИРОВАТЬ: В зависимости от того, что вы ищете, есть и другие алгоритмы, которые также являются родными в PHP: soundex
(хотя и считается замененным более новыми подходами, такими как двойной метафон), metaphone
, similar_text
.