Может быть,
\S\s([^\r\n]*?)\s*\+[0-9]+$
может вернуть названия стран в группе захвата $1
.
Используя lookaround, мы, вероятно, можем написать выражение, похожее на:
\S[A-Za-zéã.].*(?=\s\+[0-9])
, которую мы получим, используя вторую букву,
[A-Za-zéã.]
, перед которой есть еще один \S
, и тогда мы обойдем эмодзи.
const regex = /\S\s([^\r\n]*?)\s*\+[0-9]+$/gm;
const str = `?? Afghanistan +93
?? Åland Islands +358
?? Albania +355
?? Algeria +213
?? American Samoa +1684
?? Andorra +376
?? Angola +244
?? Anguilla +1264`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
Если вы хотите упростить / изменить / изучить выражение, это было объяснено на верхней правой панели regex101.com .Если хотите, вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами ввода.