if ($("keyword:contains('{Keyword:')")){ ... }
isn't matching against any conditional, and is simply returning a non-false value, so it triggers on everything (the var keyword = $("#message > p").text();
is targeting an arbitrary element.
The :contains
selector should be used to target the specific element.
$("div.message > p:contains('{KeyWord:')").text(
$("div.message > p:contains('{KeyWord:')").text().replace(/{keyword:/gi, "").replace(/}/gi, "")
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="message">
<p>{KeyWord:This is a headline}</p>
</div>
<div class="message">
<p>{Keyword:This is a headline}</p>
</div>