What is the difference between Unit, Integration, Regression, and Acceptance Testing?

What is the difference between Unit, Integration, Regression, and Acceptance Testing?

I find it challenging to differentiate between these testing levels, especially when practicing TDD or unit testing. Can someone clearly explain regression testing vs unit testing, along with how and when to implement each of these testing types?