0

I have the following regex for email validation: \b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$\b Currently, it is saying this email format is valid: john@company....com. How do I fix my regex so that it is invalid to have more than one "." character?

Sam Niles
  • 31
  • 5
  • 2
    Remove the `.` from `[A-Z0-9.-]+`? Alternatively, you can use `[A-Z0-9.-]*[A-Z0-9-]+` if you want to support dots in the hostname (or `[A-Z0-9.-]+(?<!\.)` if Lookbehinds are supported). – 41686d6564 stands w. Palestine Sep 26 '22 at 23:53
  • When you change that you'll need to allow more than one repetition of `[A-Z0-9-]+\.`. Otherwise it won't match `company.co.uk`. – Barmar Sep 26 '22 at 23:54
  • Use a negative lookahead. Replace `\.` with `\.(?!\.)`. https://regex101.com/r/IzChAl/1 – code Sep 26 '22 at 23:54
  • @Barmar the OP's question is about consecutive periods. This may give what the OP needs but does not answer the question. – code Sep 26 '22 at 23:57
  • @code That won't work in this case because `\.(?!\.)` will match the _last_ dot anyway. – 41686d6564 stands w. Palestine Sep 26 '22 at 23:57
  • @code There's little point making incremental fixes like this when he could just do it the right way. – Barmar Sep 27 '22 at 00:00
  • @41686d6564 stands w. Palestine, thanks for the suggestion. I modified the regex to be: " \b[A-Z0-9._%+-]+@[A-Z0-9.-]*[A-Z0-9-]+\.[A-Z]{2,}$\b ". However this domain is still consider to be valid: joe@company.....co.uk – Sam Niles Sep 27 '22 at 20:17

0 Answers0