I’d think animating the whole thing would be much easier then doing anything else because all you have to do is rotate the segments.
Anyways, if you want another option, where I think @alexthecool600 is going with the constraints is to use the ball in socket constraint for each segment so each segment will move freely in a worm like movement. Springs may also be useful to try to move the segments back into their aligned place.
I’m 1 year late for this, but for other people trying to do this, what I ended up doing back then was only rigging the head to be animated, having BallSocketConstraints between each segment, and using BodyVelocities to keep each segment unaffected by gravity. Using inverse kinematics could work instead but I thought it might get laggy.