one idea: generate an Array holding the positions of the zigzag path. Then let the enemy simply go from one point to the next.
How to generate that Array:
1. get position of player
2. between enemy position and player position generate X points (=supportPoints), where X = (playerPosition - position) / zigzagIntervalLength
3. for each of those newly created points translate them by Y, where Z = supportPoint + (playerPosition - supportPoint).normal * zigzagAmplitude * (-1)^supportPointIndex
So the idea is that you control the zigzagPath with 2 parameters, zigzagIntervalLength & zigzagAmplitude.
zigzagIntervalLength: used to control the distance between the zigzagPoints.
zigzagAmplitude: used to control the 'zigzaginess' of the line. smaller value leads to a more straight line.
this should give you a zigzagPath from enemyPosition to playerPosition. What i did not consider in this approach is the moving player. So you will need to recalculate them regularly for your enemy to finally reach the player.