Regular expression for words longer than 2 containing at most two x-s
Your regular expression accepts the word $xxxy$, which contains too many $x$s.
We can break down words in your language into three different kinds:

No $x$s, and so at least three many $y$s.
One $x$. In that case, the word is of the form $y^ixy^j$, with $i+j \geq 2$. This means that either $i = 0$ and $j \geq 2$, or $i = 1$ and $j \geq 1$, or $i \geq 2$.
0 Two $x$s. In that case, the word is of the form $y^ixy^jxy^k$, with $i+j+k \geq 1$. This means that either $i=j=0$ and $k \geq 1$, or $i=0$ and $j \geq 1$, or $i \geq 1$.

Putting everything together, we reach
$$
yyy^+ + xyy^+ + yxy^+ + yy^+xy^* + xxy^+ + xy^+xy^* + y^+xy^*xy^*.
$$
As a bonus, this regular expression is &quot;unambiguous&quot;, in the sense that each word belongs to exactly one summand.
We can shorten this expression in many ways. For example, notice that if we consider only words with exactly two $x$s, we can obtain all words in the language by optionally replacing an $x$ with a $y$. This gives us the simpler expression
$$
(x+y)^2y^+ + (x+y)y^+(x+y)y^* + y^+(x+y)y^*(x+y)y^*.
$$
If we want something more symmetric, we can take
$$
y^+(x+y)y^*(x+y)y^* + y^*(x+y)y^+(x+y)y^* + y^*(x+y)y^*(x+y)y^+.
$$