C# 网站和电子邮件的正则表达式

C# 网站和电子邮件的正则表达式,c#,regex,email,web,anchor,C#,Regex,Email,Web,Anchor,您好,我正在尝试了解如何使我的正则表达式在不以@开头时仅与url匹配(以防止它与电子邮件匹配),以及如何使qoutes与html锚定标记匹配() 正则表达式: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/` /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ 和电子邮件匹配(email@website.com)和防止() 正则表达式: /^(https?:\/\

您好,我正在尝试了解如何使我的正则表达式在不以@开头时仅与url匹配(以防止它与电子邮件匹配),以及如何使qoutes与html锚定标记匹配(

正则表达式:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/`
/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
和电子邮件匹配(email@website.com)和防止(

正则表达式:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/`
/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/
我不断得到与电子邮件最后部分匹配的网站regex。 如何防止我的网站周围出现@before和“”,以及如何防止我的电子邮件regex上出现“”


用C#

编码部分答案:经过长时间的紧张研究,找到了一个好的正则表达式来匹配电子邮件地址,我想出了这个非常健壮和通用的解决方案:

if(adressString.Contains("@") && adressString.Length > 3) // it's an email address

说明:谷歌和朋友们一致认为,不存在匹配所有可能电子邮件地址的正确正则表达式,因为有效电子邮件地址不存在简单/清晰/明确的定义。

没有一个好的正则表达式可以确定字符串是电子邮件地址。你最好只检查一个“@”符号


要检查URI,您可以使用
URI.iswellFormedUrString(URI)

这是我用于电子邮件的正则表达式,希望这对您有所帮助

public static Regex EmailRegex = new Regex(@"^((([a-zA-Z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-zA-Z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-zA-Z]|[0-9])([a-zA-Z]|[0-9]|\-){0,61}([a-zA-Z]|[0-9])*\.))*([a-zA-Z]|[0-9])([a-zA-Z]|[0-9]|\-){0,61}([a-zA-Z]|[0-9])\.(af|ax|al|dz|as|ad|ao|ai|aq|ag|ar|am|aw|au|at|az|bs|bh|bd|bb|by|be|bz|bj|bm|bt|bo|ba|bw|bv|br|io|bn|bg|bf|bi|kh|cm|ca|cv|ky|cf|td|cl|cn|cx|cc|co|km|cg|cd|ck|cr|ci|hr|cu|cy|cz|dk|dj|dm|do|ec|eg|sv|gq|er|ee|et|eu|fk|fo|fj|fi|fr|gf|pf|tf|ga|gm|ge|de|gh|gi|gr|gl|gd|gp|gu|gt|gg|gn|gw|gy|ht|hm|va|hn|hk|hu|is|in|id|ir|iq|ie|im|il|it|jm|jp|je|jo|kz|ke|ki|kp|kr|kw|kg|la|lv|lb|ls|lr|ly|li|lt|lu|mo|mk|mg|mw|my|mv|ml|mt|mh|mq|mr|mu|yt|mx|fm|md|mc|mn|ms|ma|mz|mm|na|nr|np|nl|an|nc|nz|ni|ne|ng|nu|nf|mp|no|om|pk|pw|ps|pa|pg|py|pe|ph|pn|pl|pt|pr|qa|re|ro|ru|rw|sh|kn|lc|pm|vc|ws|sm|st|sa|sn|cs|sc|sl|sg|sk|si|sb|so|za|gs|es|lk|sd|sr|sj|sz|se|ch|sy|tw|tj|tz|th|tl|tg|tk|to|tt|tn|tr|tm|tc|tv|ug|uk|ua|ae|gb|us|um|uy|uz|vu|ve|vn|vg|vi|wf|eh|ye|zm|zw|com|edu|gov|int|mil|net|org|biz|info|name|pro|aero|coop|museum|arpa|mobi))|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$");

“我不断得到与电子邮件最后部分匹配的网站正则表达式”-这不应该发生。显示您的代码和一些示例输入。您的意思是?是的,更新了正则表达式,仍然匹配网站内的锚标记。还有比这更多的域名,看看真的,尤其是现在有了像“nike”或“football”这样的额外域名。我使用这个正则表达式已经将近4年了,它从来没有让我失望过。尽管如此……我确实理解这是一种可能。你能添加你的研究中的链接吗?我想知道更多关于这一点