Ок. Три типа значений, но до сих пор мало что ясно. Можно подумать что надо приводить числа к строкам, но что делать с boolean, тоже приводить или выбрасывать? null возвращается если ничего не найдено? Функция должна работать только с этими данными и только? Но что если там будет строка '1' и число 1. Как будто кто-то вымарал девять десятых условия. А если в примере реально 'regex' как строка то вообще огонь. Мне кажется тебя ставят в извращённые условия и будут смотреть как ты выкручиваешься.