Эта функция вызывает ошибку «неправильного доступа» в Chrome, возвращает неверный результат в IE (pirate_bar_pirate_baz) и работает как ожидается в Firefox (pirate_bar_ninja_baz). Если вы удаляете глобальный флаг из обычного выражения, он отлично работает, но только для первого «foo» вместо обоих. В чем проблема?Почему RegExp.rightContext вызывает недопустимую ошибку доступа в анонимной функции?
regex = /foo/g;
//regex = /foo/;
"foo_bar_foo_baz".replace(regex, function(str) {
if (RegExp.rightContext == "_baz") {
return "ninja";
} else {
return "pirate";
}
});
Похоже ошибка. '" xx ".replace (/ x/g, function() {RegExp.rightContext;});' также бросает '' незаконный доступ '' в Chrome, в то время как просто выборка свойства не должна делать этого, я предполагаю. – pimvdb
Свойство устарело, поэтому его больше не использовать и, вероятно, он не получит исправлений. См. Https://developer.mozilla.org/en/JavaScript/Reference/Deprecated_Features. Используйте другое выражение, чтобы включить строку в соответствие, которая вам нужна для 'if'. –