Zend certified PHP/Magento developer

How to remove a specific characters in an emails lines before the @?

How to remove any characters that aren’t of the following from email lines before the @, through regular expressions?

I tried the following but it didn’t work 🙁

Find what: ^([^a-z0-9;:]*)([a-z0-9]*)(?1)(.*?[;:].+$)

Replace with: $2$3

Characters to keep in any position before the @:

| Letters | Numbers | - | _ | . |

Sample Lines:

1my.tes~t@gmail.com:Testing1
my.tes!2t@gmail.com:tEsting1
m#y3.test@gmail.com:teSting1
m4y.tes(t@gmail.com:tesTing1
my.5test@gmail.com:testIng1
my-tes6(t@gmail.com:testiNg1
my_t7e+st@gmail.com:testinG1
&my_t%est8=@gmail.com:TestinG1

Result Needed:

1my.test@email.com:Testing1
my.tes2t@email.com:tEsting1
my3.test@email.com:teSting1
m4y.test@email.com:tesTing1
my.5Test@email.com:testIng1
my-tes6t@email.com:testiNg1
my_t7est@email.com:testinG1
my_test8@email.com:TestinG1