@"^([a-zA-Z0-9_\-\.\']+)@((\[[0-9]{1,3}" +
@"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" +
@".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$";
上面的正则表达式用于C#.net站点以验证电子邮件地址。它将域后面的内容限制为字符A-Z,长度可以是2到4个字母。
microsoft.co.uk传递
microsoft.com传递
microsoft.co.fred传递
microsoft.co.freda失败
我需要更改表达式,以便在域之后允许任何长度字符串。
但如果我将第三行更改为:
@".)+))([a-zA-Z]|[0-9])(\]?)$";
我原本以为会删除长度限制。但事实并非如此。它使.com和.co.uk地址失败。
如何更改表达式以允许:
Jim@somecompany.longwordhere
或
Jim@somecompany.longwordhere.longwordhere
对'longwordhere'的长度没有限制,并且它可以是字母或数字吗?
答案 0 :(得分:1)
我会使用这个,更简洁的第3行替换,也将使用*
量词删除长度限制完全:
@".)+))([a-zA-Z0-9]*)(\]?)$";
现在可以是0 or more
个字符。 +
至少需要1。
我们可以安全地使用*
,因为您有$
字符串结束所需的锚点。
我也只使用[a-z]
和Ignorecase
选项,但这是一个品味问题。