You're on the right track! For no zeroes, your regex is correct. For one zero, it looks correct! For two zeroes, an even length string with two zeroes is the concatenation of two even length strings with one zero each, or two odd length strings with one zero each. You already came up with a regex for matching even length strings with one zero each, so I imagine you can adapt it for odd-length strings.
If I were building a regex, I would imagine an arbitrary even-length string with up to two zeroes in it. I would divide that string into blocks that are two characters long. Most of the blocks will probably be 11. When there is a zero in isolation, it will occur in a block like 01 or 10. Very rarely, you will get a string with a block that has two zeroes 00 in a row, in which case there must be only 1s throughout the rest of the string.
Putting these ideas together:
- An even length string with a single zero in it: (11)*(01|10)(11)*
- An even length string with two consecutive zeros appearing in a block together: (11)(00)(11)
- An even length string with two zeroes that don't appear in the same block: (11)*(01|10)(11)*(01|10)(11)*
- Putting this altogether: $$(11)^\star\quad(\epsilon | 00 | (01|10)(11)^\star(|01|10))\quad (11)^\star$$