我注意到有时候用户错误输入他们的电子邮件地址(以联系我们的形式),例如,键入@ yahho.com,@ yhoo.com或@ yahoo.co而不是@ yahoo.com
我觉得这可以通过一些javascript在现场纠正.只需检查电子邮件地址是否存在可能的错误,例如上面列出的错误,这样如果用户键入his_email@yhoo.com,就会显示非突兀的消息,或类似的消息,表明他可能意味着@yahoo. com,并要求仔细检查他是否正确输入了他的电子邮件.
问题是:
如何检测-in java脚本 - 字符串与"yahoo"或"yahoo.com"非常相似?或者一般来说,我如何检测两个字符串之间的相似程度?
PS(这是旁注)在我的具体案例中,用户不是以英语为母语的人,而且大部分用户都不熟悉,网站本身不是英文.
是root@[127.1]一个语法上有效的电子邮件地址?
为什么?为什么不?
我想允许用户更改他的电子邮件地址.用户将更改其电子邮件地址,然后将带有链接的确认电子邮件发送到该地址,在用户单击该链接后,它将更改其在数据库中的电子邮件地址.
我知道django-generic-confirmation处理这样的确认,但我想尝试自己做.
要更改电子邮件,我的代码将是:
User.objects.get(username=username).update(email=request.POST['email'])
Run Code Online (Sandbox Code Playgroud)
要发送电子邮件到该地址,我会:
if 'Change Email' in request.POST.values():
from django.core.mail import send_mail
send_mail(
'Confirm email change',
'Click this **link** to confirm your change of email',
'from@example.com',
[request.POST['email']]
)
Run Code Online (Sandbox Code Playgroud)
只有在用户确认了他的电子邮件之后,我才会如何延迟数据库中电子邮件的更改?我将如何创建一个激活此过程的电子邮件的链接?谢谢.
如何更改HTML5的消息(或剂量会根据浏览器的语言自动更改?)
例如:
<!DOCTYPE HTML>
<html>
<body>
<form action="demo_form.asp" method="get">
E-mail: <input type="email" name="user_email" /><br />
<input type="submit" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我在Opera上运行此代码(来自W3schools)并写出无效的电子邮件地址时,它说
Please enter a valid email address
Run Code Online (Sandbox Code Playgroud)
如何将其更改为另一种语言而不是英语,或将警告更改为我想要的内容?
我只是使用javascript学习正则表达式匹配,并对下面描述的场景有疑问.
我正在尝试验证电子邮件,条件如下:
格式应该是
xxx@yyy.zzz其中
A)"XXX","YYY"和"ZZZ"份只能取之间小写a和z的值
B)ZZZ,YYY和XXX份是任意的长度(应该是最小的一个虽然)
现在我明白我可以像这样建立正则表达式:
EDIT:CORRECTED REG EXP
/[a-z]+@[a-z]+\.[a-z]+/
以上将评估像"aaa@aaa.aaa"这样的字符串为真.
但我担心的是,如果我提供的话,在上面的表达中"a999@aaa.aaa",它将再次评估为真.现在,如果我修改了reg ex,**/[a-z]{1,}@[a-z]+\.[a-z]+/**即使那时它会评估"a999@aaa.aaa"为真,因为"a"作为第一个字符的存在.
所以,我想知道如何匹配电子邮件"xxx@yyy.zzz"中的第一部分"xxx" ,它从第一个字符串检查整个字符串,直到它到达@符号,条件是它应该只将a到z作为有效值.
换句话说,正则表达式不应该考虑电子邮件的用户名部分的长度,并且无论输入的字符数是多少,它都应该根据指定的正则表达式条件对其进行测试,并且它应该从索引中测试它的字符集. 1到@的索引.
我总是觉得正常表达很头疼,谷歌搜索并没有真正帮助.我目前正在使用以下表达式(preg_match):/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/
但是,如果我想允许带有加号的电子邮件,这显然不起作用,例如:foo+bar@domain.com
我怎么需要改变我的表达才允许它?在此先感谢您的帮助!
许多人可能已经意识到,正确验证电子邮件地址可能有点噩梦.您可以整天搜索与当前RFC标准匹配的C#正则表达式,并且您将找到不同的正则表达式,它们会产生不同的结果.
如果查看http://en.wikipedia.org/wiki/Email_address#Local_part,您将看到不允许在本地部分的开头或结尾处出现句点.也不允许连续两个时期.但是,以下NUnit测试证明System.Net.MailMessage允许您为某些无效的电子邮件地址格式实例化MailMessage对象.
[Test]
[TestCase(@"foobar@exampleserver")] //technically valid from the wiki article
[TestCase(@"jsmith@[192.168.2.1]")] //technically valid from the wiki article
[TestCase(@"niceandsimple@example.com")] //vanilla email address
[TestCase(@"very.common@example.com")] //also standard
[TestCase(@"a.little.lengthy.but.fine@dept.example.com")] //long with lots of periods
[TestCase(@"disposable.style.email.with+symbol@example.com")] //disposable with the + symbol
[TestCase(@"other.email-with-dash@example.com")] //period and dash in local part
[TestCase(@"user-test-hyphens@example-domain.com")] //lots of hyphens
[TestCase(@"!#$%&'*+-/=?^_`{|}~@example-domain.com")] //all these symbols are allowed in local part
[TestCase(@"ër_%?dev@g??il.com")] //characters outside the ascii range are permitted
[TestCase(@"""abcdefghixyz""@example.com")] //technically valid
//[TestCase(@"abc.""defghi"".xyz@example.com")] //technically valid, but .NET throws exception
public void CanCreateMailMessageObjectTest(string emailAddress) …Run Code Online (Sandbox Code Playgroud) 我可以在Google帐户(Gmail)中创建无限制的电子邮件别名,参见:http://www.gizmodo.com.au/2014/09/how-to-use-the-infinite-number-of-email-addresses- Gmail的,给,你/
但我需要过滤电子邮件地址,以避免用户在我的应用程序中使用相同的原始电子邮件进行注册.
我想知道是否有什么可以解决这个问题?或者我的唯一选择是使用正则表达式进行过滤?
这是我的视图模型中的一个字段:
[Required(ErrorMessage = "Email is missing."), EmailAddress(ErrorMessage = "Email is not valid.")]
public string Email { get; set; }
Run Code Online (Sandbox Code Playgroud)
(EmailAddress来自EmailAddressAttribute.EmailAddressAttribute()类型)
这是HTML的相关部分:
<div>
<label for="inputEmail">EMAIL</label>
<input id="inputEmail" ng-model="email" asp-for="Email" class="form-control" />
</div>
<div>
<span asp-validation-for="Email" class="text-danger"></span>
</div>
Run Code Online (Sandbox Code Playgroud)
当我myemail在电子邮件文本框中键入内容时,会说
电邮无效
但是,在键入时myemail@email,视图模型会将其视为正确的(仅在前端)。
public async Task<JsonResult> Register([FromForm]VisitViewModel vm)
Run Code Online (Sandbox Code Playgroud)
这样正确的转换会使ModelStateon无效,并拒绝电子邮件,因此该部分还可以。
但是根据此答案,前端应将此表示为无效
有人可以解释这里发生了什么吗?我绝对不知所措。
c# email-validation asp.net-mvc-viewmodel asp.net-core-mvc asp.net-core
我有一个利用的单元测试项目Interop.ADODB.这是代码:
public CDO.Message ReadMessage(string emlFileName)
{
if (string.IsNullOrEmpty(emlFileName)) return null;
CDO.Message msg = new CDO.MessageClass();
ADODB.Stream stream = new ADODB.StreamClass();
stream.Open(Type.Missing,
ADODB.ConnectModeEnum.adModeUnknown,
ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified, string.Empty, string.Empty);
stream.LoadFromFile(emlFileName);
stream.Flush();
msg.DataSource.OpenObject(stream, "_Stream");
msg.DataSource.Save();
return msg;
}
Run Code Online (Sandbox Code Playgroud)
问题是我将这个项目转换为.NET Core.我无法弄清楚如何导入我需要使这个方法工作的COM库.我需要的是Interop.ADODB和Interop.CDO.
所有这个方法都是采用电子邮件文件并转换为对象,以便我可以从中读取值,然后与发送的电子邮件进行比较.真的是一个简单的单元测试来验证电子邮件内容.
有没有办法让我导入COM对象,或者是否有一个库替换CDO.Message了我现在想要使用的库?
c# unit-testing email-validation asp.net-core-mvc asp.net-core
email-validation ×10
regex ×4
c# ×3
asp.net-core ×2
email ×2
javascript ×2
php ×2
rfc ×2
validation ×2
.net ×1
django ×1
html ×1
html5 ×1
preg-match ×1
rfc822 ×1
standards ×1
unit-testing ×1