多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
我在验证电子邮件方面遇到了一些问题.
在我的模型中:
[Required(ErrorMessage = "Field can't be empty")]
[DataType(DataType.EmailAddress, ErrorMessage = "E-mail is not valid")]
public string ReceiverMail { get; set; }
Run Code Online (Sandbox Code Playgroud)
在我看来:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail"}) <br />
@Html.ValidationMessageFor(m => m.ReceiverMail)
Run Code Online (Sandbox Code Playgroud)
现在,当你将场留空时,它正确地向我显示"场不能为空".但是当你填写一个无效的电子邮件地址,如:"fwenrjfw",那么表格并没有说"电子邮件无效".
如何获取表单以将输入验证为电子邮件地址?我正在寻找一些帮助.
我正在编写一个非常简单的模型来演示一些HTML5表单验证.但是,我注意到电子邮件验证没有检查地址中的点,也没有检查点后面的字符.
换句话说,"john @ doe"被认为是有效的,当它显然不是有效的电子邮件地址时; "doe"不是域名.
这就是我编写电子邮件字段的方式:
<input type="email" required />
Run Code Online (Sandbox Code Playgroud)
这还不够吗?
检查这个小提琴,看看我的意思.
注意:我知道如何通过RegEx模式来实现这一点.我只是想知道如何使用电子邮件类型取而代之.
我正在寻找一种定义文本表达式的通用方法,它允许验证值.
例如,我有一个值应该只设置为1,2,3,10,11或12.它的约束可以定义为: (value >= 1 && value <= 3) || (value >= 10 && value <= 12)
或者另一个可以是1,3,5,7,9等的值......会有像value % 2 == 1
或那样的约束IsOdd(value)
.
(为了帮助用户更正无效值,我想显示约束 - 所以描述IsOdd
性更好.)
这些约束将在客户端(用户输入之后)和服务器端进行评估.因此,多平台解决方案将是理想的(特别是Win C#/ Linux C++).
是否存在允许评估或解析类似简单表达式的现有语言/项目?
如果没有,我可以从哪里开始创建自己的?
我意识到这个问题有点模糊,因为我不完全确定我追求的是什么.搜索结果没有结果,因此即使某些术语作为起点也会有所帮助.然后我可以相应地更新/标记问题.
我想匹配任何电子邮件地址,该地址.
在@
符号前至少包含一个(点).电子邮件已经过验证,所以正则表达式只需要搜索.
.
我试过了
Regex emailMatcher = new Regex(@"^[a-zA-Z\.']{1,}\.[a-zA-Z\.']{1,}@example\.com$");
Run Code Online (Sandbox Code Playgroud)
但我知道电子邮件可以包含更多字符而不仅仅是a-zA-Z\.'
因为这不会涵盖所有情况.
关于如何做的任何想法?
谢谢
编辑:
我不是要验证电子邮件,我已经验证了电子邮件,我只需要选择包含签名.
之前的电子邮件@
将通过的示例:
first.last@example.com
first.middle.last@example.com
Run Code Online (Sandbox Code Playgroud)
应该通过的示例,但不会使用我当前的正则表达式传递
first.last(comment)@example.com
Run Code Online (Sandbox Code Playgroud) 我有一个纯文本文件.要求是从文本文件中读取有效的电子邮件地址.
文本文件不包含任何特殊字符,每行包含一个单词.
样品
test1
test@yahoo.com
test2
test@gmail.com
Run Code Online (Sandbox Code Playgroud)
我试过读取文本文件如下,
var emails = File.ReadAllLines(@"foo.txt");
Run Code Online (Sandbox Code Playgroud)
但无法找到如何从文本文件中提取有效的电子邮件.
我正在使用C#4.0