Заменить regex на / g / заменяет значение дваждыJavascript

Форум по Javascript
Ответить
Anonymous
 Заменить regex на / g / заменяет значение дважды

Сообщение Anonymous »

У меня есть простой regex reply - user предоставляет sind String и заменить string. Я использую OriginalString.Replace (New Regexp (Find, 'Gi'), заменить) , и он работает в основном хорошо. Недавно я заметил, что один из краевых случаев, когда строка замены применяется дважды, когда строка find < /code> совпадает с всеми.

Код: Выделить всё

const first =   'bat, batman, manbat'.replace(new RegExp('bat', 'gi'), 'cat');
console.log('first: ', first);
// => 'cat, catman, mancat'  // Every bat is replaced with cat, thanks to the global switch

const second = "bat, batman, manbat".replace(new RegExp('(.*)', 'gi'), '$1, cat');
console.log('second: ', second);
// => 'bat, batman, manbat, cat, cat'  // here, the 'cat' is replaced twice because of 'g'< /code>
< /div>
< /div>
< /p>
Почему «кошка» применяется дважды для второго результата? Я бы ожидал, что это будет просто Bat, Batman, Manbat, Cat 
- я просто хочу добавить, Cat к нескольким случаям строк, но все они имеют, Cat дважды в конце. Как это исправить?

Подробнее здесь: https://stackoverflow.com/questions/797 ... alue-twice
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»