我的大多数用户都有与其个人资料相关联的电子邮件地址/etc/passwd.它们始终位于第5个字段中,我可以抓取它,但它们出现在第5个字段中以逗号分隔的列表中的不同位置.
有人可以给我一个正则表达式从这个文件中的一行只抓取电子邮件地址(用逗号分隔)?(我将使用bash脚本中的grep和sed)
来自文件的示例行:
user1:x:1147:5005:User One,Department,,,email@domain.org:/home/directory:/bin/bash
user2:x:1148:5002:User Two,Department2,email2@gmail.com,:/home/directory:/bin/bash
可能重复:
验证电子邮件地址的最佳正则表达式是什么?
我正在使用这个特定的正则表达式来检查电子邮件.
"^[A-Za-z0-9](([a-zA-Z0-9,=\.!\-#|\$%\^&\*\+/\?_`\{\}~]+)*)@(?:[0-9a-zA-Z-]+\.)+[a-zA-Z]{2,9}$"
我的问题是,这允许在"@"符号之前的句点.是否有任何方式修改此表达式,以便不会发生这种情况,但仍保留所有其他条件.
a.@ b.com应无效
在此先感谢-Rollin
我想知道如何只允许一个电子邮件地址?另外,我如何只检查电子邮件地址中的@符号以验证电子邮件?
这是我的PHP代码.
if (isset($_GET['email']) && strlen($_GET['email']) <= 255) {
    $email = mysqli_real_escape_string($mysqli, strip_tags($_GET['email']));
} else if($_GET['email'] && strlen($_GET['email']) >= 256) {
    echo '<p>Your email cannot exceed 255 characters!</p>';
}
#!/usr/bin/python
import re
str = raw_input("String containing email...\t")
match = re.search(r'[\w.-]+@[\w.-]+', str)
 if match:
  print match.group()
它不是最复杂的代码,我正在寻找一种获得所有匹配的方法,如果可能的话.
为什么这个正则表达式不起作用?正确的电子邮件地址未通过验证.
<script type="text/javascript">
$(document).ready(function() {
    var regex = new RegExp(/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i );
    $('#submit').click(function () {    
        var name = $('input[name=name]');
        var email = $('input[name=email]');
        var website = $('input[name=website]');
        var comment = $('textarea[name=comment]'); 
        if ((!regex.test(email))) {
            email.addClass('hightlight');
            return false;
        } else 
            email.removeClass('hightlight');            
    }
}
}
大家好,
我有一个大致相同的电子邮件地址,
firstname.lastname@4domain.co.nz
哪个不适用于我在这里用于电子邮件地址的正则表达式.它似乎不喜欢域名开头的4.
private const string MatchEmailPattern =
        @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@" +
        @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\." +
        @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" +
        @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
大多数其他角落案件适用于此正则表达式,以下所有内容均被拒绝,
        Assert.IsFalse(EmailValidator.IsValidEmailAddress("..@test.com"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress(".a@test.com"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress(".@s.dd"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress("ab@988.120.150.10"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress("ab@120.256.256.120"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress("2@bde.cc"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress("-@bde.cc"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress("..@bde.cc"));
        Assert.IsFalse(EmailValidator.IsValidEmailAddress("_@bde.cc"));
人们可以建议哪些其他正则表达式适用于上述的电子邮件?
此外,上面的正则表达式的优点是它适用于这样的地址,而且很多都没有,
firstname.lastname_@gmail.com
我们的一位客户在通过对我们的系统的API调用触发之前,在自己的软件中验证电子邮件地址.但问题是他们的验证规则与我们的系统不匹配,因此他们正在解析和接受违反我们规则的地址.这导致许多失败的呼叫.
他们正在解析诸如"dave@-whatever.com"之类的东西,这违反了RFC 952/RFC 1123规则,因为它以连字符开头.他们要求我们为他们提供我们的正则表达式列表,以便他们可以在他们的平台上更新验证以匹配我们的.
所以,我需要找到/构建一个RFC 952/RFC 1123.我在另一个SO线程中找到了这个(我是一个潜伏者:)),它是否合适并防止这些非法域被发送?
"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$";
我尝试过以下代码,但它给了我无与伦比的代码.
re:run("qw@qc.com", "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b").
regexp我来到这里http://www.regular-expressions.info/email.html
编辑:下一步不起作用
re:run("345345", "\b[0-9]+\b").
如果您在字符串中收到电子邮件,那么该字符串将匹配
re:run("qw@qc.com", "^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$").
我$(elem)何时使用它的目的是什么?
我的javascript函数有问题,我有3个表单,这3个表单有时共享相同的字段类,因此当我尝试对表单中的1个进行验证时,即使填写正确,它也会返回错误该函数将获取另一个表单的类,我的一个朋友说使用$(elem)因为它适用于他的问题,但我不知道如何使用$(elem),何时使用它,以及如何使用它这行得通.
如果有人能向我解释这一点真的很棒.
一个例子也将不胜感激:)
例:
function dispFields(a, b, c, z, ch) 
{
    var valid;
    var blanks = Array();
    var blanks2 = Array();
    var email_reg = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/;
    var myVal = $('#'+a).find('input.required').map(function() {
                               return $(this).val();
                               }).get().join(',');
    var myTitle = $('#'+a).find('input.required').map(function() {
                               return $(this).attr("title");
                               }).get().join(',');
    var myEmail = $('#'+a).find('input.email-field').map(function() {
                               return $(this).val();
                               }).get().join(',');
    var myEmailtitle = $('#'+a).find('input.email-field').map(function() {
                               return $(this).attr("title");
                               }).get().join(',');
        var email_val = myEmail.split(',');
        var email_title = myEmailtitle.split(',');
        var email_error = email_val.length;
        var error_form = myVal.split(',');
        var error_title = myTitle.split(','); …如何重写此正则表达式以匹配所有电子邮件地址,但不匹配
包含“ hotmail、gmail 和 yahoo ”的电子邮件地址。到目前为止,我写了这个:
^([a-zA-Z0-9_\-\.]+)@(?<!hotmail|gmail|yahoo)((\[[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})(\]?)$