ReplaceAll looks at each part of expr, tries all the rules on it, and then goes on to the next part of expr. The first rule that applies to a particular part is used; no further rules are tried on that part, or on any of its subparts.
ReplaceAll applies a particular rule only once to an expression.
expr/.rules returns expr if none of the rules apply.