Вы можете использовать регулярное выражение
/(?:(?<=\D)\d+|\d+(?=\D))|\D+/
Это будет соответствовать чередующимся подстрокам только цифр и только не цифр, при условии, что строка содержит хотя бы один не-ди git символ. Если в строке есть только цифры, совпадение не производится. Если есть хотя бы один не-ди git символ, будет одно или несколько совпадений не цифр и ноль или более совпадений цифр.
Мы можем сделать самодокументирование регулярного выражения, написав его в режиме свободный интервал
/
(?: # begin a non-capture group
(?<=\D) # next match is preceded by a non-digit character
\d+ # match 1+ digits
| # or
\d+ # match 1+ digits
(?=\D) # previous match is followed by a non-digit character
) # end non-capture group
| # or
\D+ # match 1+ non-digit characters
/x # free-spacing regex definition mode
(?<=\D)
является положительным взглядом . (=\D)
является положительным прогнозом .
Если, кроме того, не должно быть никакого совпадения, если строка содержит только не-di git символы, регулярное выражение будет изменено на следующее:
/(?:(?<=\D)\d+|\d+(?=\D))|(?:(?<=d)\D+|\D+(?=\d))/