多年来,我慢慢开发了一个正则表达式,可以正确验证MOST电子邮件地址,假设他们不使用IP地址作为服务器部分.
我在几个PHP程序中使用它,它大部分时间都可以工作.但是,我不时会遇到使用它的网站遇到问题的人,我最终不得不进行一些调整(最近我意识到我不允许使用4字符TLD).
验证电子邮件的最佳正则表达式是什么?
我已经看到了几个使用函数的解决方案,这些函数使用了几个较短的表达式,但我宁愿在一个简单的函数中使用一个长复杂表达式,而不是在一个更复杂的函数中使用几个短表达式.
我读过,通过电子邮件标准的第一部分是区分大小写的,但是我试着将电子邮件发送到name@example.com
,Name@example.com
和NAME@example.com
-它在每种情况下已经到来.
邮件服务器如何处理用户名?是否有可能错过案例并且不会传递该消息?使用与提供电子邮件地址时注册时所写的完全相同的字母大小写真的非常重要吗?
有没有人建议检测一组字符串中的URL?
arrayOfStrings.forEach(function(string){
// detect URLs in strings and do something swell,
// like creating elements with links.
});
Run Code Online (Sandbox Code Playgroud)
更新:我使用这个正则表达式进行链接检测...显然几年后.
kLINK_DETECTION_REGEX = /(([a-z]+:\/\/)?(([a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel|local|internal))(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-zA-Z0-9!$&'()*+.=-_~:@/?]*)?)(\s+|$)/gi
Run Code Online (Sandbox Code Playgroud)
完整的助手(可选的Handlebars支持)在要点#1654670.
正则表达式中的/\S /表示什么?
while (cur ! = null) {
if (cur.nodeType == 3 && ! /\S/. test(cur.nodeValue)) {
element. removeChild(cur);
} else if (cur. nodeType == 1) {
cleanWhitespace(cur);
}
}
Run Code Online (Sandbox Code Playgroud) 此代码始终发出警报"null"
,这意味着该字符串与表达式不匹配.
var pattern = "^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$";
function isEmailAddress(str) {
str = "azamsharp@gmail.com";
alert(str.match(pattern));
return str.match(pattern);
}
Run Code Online (Sandbox Code Playgroud) 真正的现代正则表达式真正识别哪种语言?
每当存在具有反向引用的无限长度捕获组(例如(.*)_\1
)时,正则表达式现在匹配非常规语言.但是,就其本身而言,这还不足以匹配诸如S ::= '(' S ')' | ?
匹配对的parens的无上下文语言.
递归正则表达式(对我来说是新的,但我确信存在于Perl和PCRE中)似乎至少能识别出大多数CFL.
有没有人在这方面做过或读过任何研究?这些"现代"正则表达的限制是什么?对于LL或LR语法,他们是否严格认可或严格低于CFG?或者是否存在可以被正则表达式识别而不是CFG 而且相反的语言?
非常感谢与相关论文的链接.
我试图通过JQuery验证电子邮件的输入:
我的JQuery
<script>
/* <![CDATA[ */
jQuery(function(){
$( ".mail" ).keyup(function() {
var VAL = $(this).val();
var email = new RegExp(^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$);
if(VAL.test(email)){
alert('Great, you entered an E-Mail-address');
}
});
});
/* ]]> */
</script>
Run Code Online (Sandbox Code Playgroud)
即使我输入了example@example.com,也不会发出警报.我已经尝试过.test()和.match(),我做错了什么?
我想创建一个用户将输入邮件的表单.我想验证客户端的邮件格式.Angular2中是否有任何通用邮件验证程序?
注意:类似于angularjs验证器:https://docs.angularjs.org/api/ng/input/input%5Bemail%5D
我有一个用户的mongoose模式(UserSchema),我想验证电子邮件是否具有正确的语法.我目前使用的验证如下:
UserSchema.path('email').validate(function (email) {
return email.length
}, 'The e-mail field cannot be empty.')
Run Code Online (Sandbox Code Playgroud)
但是,这仅检查字段是否为空,而不是语法.
是否已经存在我可以重复使用的东西,或者我必须提出自己的方法并在validate函数中调用它?
使用javascript,我们如何从字符串中删除@ gmail.com或@ aol.com,以便只保留名称?
var string = "johndoe@yahoo.com";
Run Code Online (Sandbox Code Playgroud)
将只是"johdoe"?我试过分裂,但结果并不好.谢谢.