regex aspecto negativo alrededor con 2 partidos adyacentes

Debería ser una pregunta fácil de alguien:

Si ejecuto este JavaScript:

var regex = new RegExp("(?!cat)dog(?!cat)","g");
var text =  "catdogcat catdogdog catdogdogcat".replace(regex,"000");
console.log(text);

Se trata de esto:

catdogcat cat000000 cat000dogcat

Pero pensé que debería salir esto:

catdogcat cat000000 cat000000cat

¿Por qué no está el segundo "perro" encatdogdogcat Reemplazado con000?

EDITAR: Quiero reemplazar "perro" siempre que no tenga gato en AMBOS lados. Encatdogdogcat, AMBOS perros cumplen con este requisito y por lo tanto deben ser reemplazados. Obviamente no entiendo estas miradas negativas a mi alrededor ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta