PHP: <?php $text = 'Тест А.Б. AA БВГ'; $test = preg_split("/^\s*([А-ЯЁ]\S+)\s+([А-ЯЁ])\s*\.\s*([А-ЯЁ])\s*\.\s*([\s\S]*?)\s*$/", $text); print_r($test); //Array ( [0] => Тест А.Б. AA БВГ ) ?> Код (Javascript): <script> var text = 'Тест А.Б. AA БВГ'; var test = text.split(/^\s*([А-ЯЁ]\S+)\s+([А-ЯЁ])\s*\.\s*([А-ЯЁ])\s*\.\s*([\s\S]*?)\s*$/); console.log(test); //Array ( [0] => "", [1] => "Тест", [2] => "А", [3] => "Б", [4] => "AA БВГ", [5] => "" ) </script>
Объясните пожалуйста почему может не работать. Протестил на https://regex101.com/ там все пашет. сгенерировал там даже код для php. У меня не пашет, в чем дело? PHP: $re = '/^\s*([А-ЯЁ]\S+)\s+([А-ЯЁ])\s*\.\s*([А-ЯЁ])\s*\.\s*([\s\S]*?)\s*$/'; $str = 'Тест А.Б. AA БВГ'; preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0); // Print the entire match result var_dump($matches); решено, нужен был модификатор /u , из за русских символов PHP: $re = '/^\s*([А-ЯЁ]\S+)\s+([А-ЯЁ])\s*\.\s*([А-ЯЁ])\s*\.\s*([\s\S]*?)\s*$/u';