It also depends on why you want to filter_var() it in the first place. Syntax checking is often of limited value (at best). If the user enters a syntactically correct email address which is misspelled, it's not of much use. If you reject a valid email address because your regular expression rejects certain edge cases that are, in fact, valid, it's not only of limited use but can actually lose business for you.
This is probably why most site registrations just take whatever the user gives them (often using the enter-it-twice method) and sends an email with a custom link to validate the registration. In other words, the only way to truly know if an email address is completely correct is to use it.