Почему JS матчит обратный апостроф в регулярке?

Имеется следующая регулярка:

/^[A-Яа-яёЁ]+[A-Яа-яёЁ\s\-'\d]+[A-Яа-яёЁ\-'\d]$/i

При проверке ее в консоли devtools (Google Chrome) - "матчится" строка с обратным апострофом (который на клавише с буквой "ё")

image

Вот код:

let str = 'тест`ТЕСТ 123-45-54 654'

let regexp = /^[A-Яа-яёЁ]+[A-Яа-яёЁ\s\-'\d]+[A-Яа-яёЁ\-'\d]$/i

console.log( str.match(regexp) );

В сайтах-"песочницах" для проверки регулярок все нормально, эта строка не матчится.

Почему JS выдает совпадение с указанной строкой, если в регулярке не указан символ обратного апострофа? Как исправить это поведение?


Ответы (1 шт):

Автор решения: Drovosek

Помогли на другом ресурсе. Оказалось, что в регулярке буква "А" - латинская и, соответственно между латинской "A" и русской "Я" помещалось много других символов.

→ Ссылка