Take secp256r1 as an example, the parameter of the curve is
p = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
a = 0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc
b = 0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b
G = (0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296, 0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5)
From my limited math knowledge, we can calculate that there is a point (or to be precise, two points) on curve such that the x coordinate is 0. $$y^2=x^3+ax + b \mod p$$ let $x=0$, $y^2 = b \mod p$. We can get that $y=46263761741508638697010950048709651021688891777877937875096931459006746039284$
However I don't know if this is a point that G could generate. I read that in some implementation zero x coordinate will be treated as infinity point. I did some research but did not find explanation on this. On the perspective of algorithm library, should we reject a public key with zero x coordinate (but non-zero y coordinate)? On the perspective of user, should I re-generate a private key if I have found that my x coordinate of public key is 0? (or it will never happen so I don't have to worry?)
Extended question: The similar question can be asked for y coordinate: there might be a point on curve that the y coordinate is zero. Although I don't know how to calculate the actual coordinate, I think it should be considered as a valid public key. Correct me if I am wrong though.