0

我知道验证电子邮件的麻烦。我不是在寻找“正则表达式之墙”。我只是想修复我已经拥有的正则表达式。

^[\p{L}0-9!$'*+\-_]+(\.[\p{L}0-9!$'*+\-_]+)*@[\p{L}0-9]+(\.[\p{L}0-9]+)*(\.[\p{L}]{2,})$

这个正则表达式验证大多数电子邮件,甚至是 unicode 字符。我无法让它与包含破折号的域名一起使用。

你能帮我扩展域验证部分以包括破折号吗?

4

1 回答 1

2

[\p{L}0-9]+after the 的两个实例@都必须-添加到字符组中,例如[\p{L}0-9-]+. 您可能希望扩展它以禁止前导和尾随连字符,尽管您越深入地使您的表达式反映现实,您就越接近正则表达式的那堵墙。

请注意,IDNA(对于域部分)和 RFC 6531(对于本地部分)都没有将 Unicode 字符限制为 Letter 类。

于 2013-09-09T12:53:04.380 回答