Вот такой вариант:
/^\[id\d+\|@([^\]]+)\]|https\:\/\/(m\.)?vk\.com\/(.+)$/
короткое имя окажется во 2-м или 4-м элементе.
В консоли браузера проверка на JS:
const str1 = '[id656077892|@my_name.name]';
const str2 = 'https://vk.com/my_name.name';
const regexp = /^\[id\d+\|@([^\]]+)\]|https\:\/\/(m\.)?vk\.com\/(.+)$/;
str1.match(regexp)
// [ "[id656077892|@my_name.name]", "my_name.name", undefined, undefined ]
str2.match(regexp)
// [ "https://vk.com/my_name.name", undefined, undefined, "my_name.name" ]