Сценарий промежуточного алгоритма Free code camp: решение для регулярных выражений на латинице Pig

#regex

#регулярное выражение

Вопрос:

Я нашел это действительно элегантное решение для pig latin converter, но, похоже, я не могу разобраться с регулярным выражением к нему. «$ amp;way» или «$ 2 $ 1ay» при замене. Не мог бы кто-нибудь объяснить это, пожалуйста?

   function translatePigLatin(str) {
  return str
    .replace(/^[aeiou]w*/, "$amp;way")
    .replace(/(^[^aeiou] )(w*)/, "$2$1ay");
}

// test here
translatePigLatin("consonant");
  

Комментарии:

1. не могу понять, в чем вопрос

Ответ №1:

Кажется, это «Решение 4» из «Руководства по решению задач freeCodeCamp: Pig Latin«. На странице точно объясняется, что он делает.

Я предполагаю, что вопрос заключается в значении $amp; , $2 , …

  • $amp; является ли вся строка, которая была сопоставлена с регулярным выражением
  • $1 является ли часть в первой паре круглых скобок
  • $2 вторые круглые скобки
  • и т.д.

Смотрите, например, здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter

Комментарии:

1. Я все еще в замешательстве с этим решением