Кажется, вы наткнулись на недавнюю ошибку / регрессию в Chrome 75 (начиная с версии 75.0.3756.0).Отчет об ошибке можно найти по адресу Проблема 972850: RegExp / [\ W _] / gi соответствует букве S :
"RST".replace(/[\W_]/gi, "");
Какое поведение ожидается?
Выход "RST".
Что пошло не так?
Вывод «RT».
Проблема объединена с Проблема 971636: регулярное выражение / ſ / i (U + 017F) соответствует нормальному s (U + 0073) .Участник проекта Chromium замечает похожий случай в комментарии № 13 к этой второй теме:
гул ...
"S".match(/[\W]/i)
null
"S".match(/[a\W]/i)
["S", индекс: 0, ввод: "S", группы: undefined]
Обратите внимание, что/[a\W]/i
- это просто вариант для вашего случая: ошибка не относится к подчеркиванию: это происходит, как только вы добавляете символ в класс, который находится в \w
.Например, /[x\W]/i
, /[,.\W#j]/i
также вызывают проблему.Флаг g
не связан с проблемой, и когда вы используете модификатор u
, проблема исчезает.
В любом случае, важными новостями здесь является то, что ошибка была подтверждена и исправлена в Chromium 76и, возможно, в выпуске 75 ошибок.
Если вы не боитесь бета-релизов, вы можете загрузить бета-версию , которая на момент написания статьи составляла 76.0.3809.46.Я установил его только сейчас и подтверждаю, что он исправляет ошибку.