here are few points!
1. wire gets initialize by default to 'z' whereas reg gets initialize to 'x'
2. wire does not hols previous value where as reg holds old value if not diven.
3. wire can not be driven inside always whereas registers generally deiven inside
always block!
Whenever you want to store a value, then you have to use reg.
But when you just want to pass the value to the next logic element then you can use wire.
reg comes into play when we design sequential elements
wire is used both in sequential and combinational