Java正则表达式电子邮件替换所有空格和 "[at]"符号

标签 java email

我有一个使用正则表达式来验证电子邮件地址的方法。

public String searchFormail(String searchWord) {

    Pattern pattern = Pattern
            .compile("([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})");
    Pattern pattern2 = Pattern.compile("([\\w\\-]([\\.\\w])+[\\w]+  \\(at\\)([\\w\\-]+\\.)+[A-Za-z]{2,4})");

    Matcher matchs = pattern.matcher(searchWord);
    Matcher matchs2 = pattern2.matcher(searchWord);

    if (matchs.find() || matchs2.find()) {
        return searchWord.substring(matchs.start(), matchs.end());

    }

    return null;
}

第一个问题:如果 searchFormail 将此字符串作为输入“support@ google.com”,请注意 @ 后面的空格。如何替换此空格以使字符串输入变为“support@google.com”。我在正则表达式中尝试了 //s ,但这只是忽略了空格。所以,这没有帮助。

第二个问题:我的第二个模式(使用“google[at]support.com”验证邮件)不起作用。如何改进此正则表达式以获取“google[at]support.com”等电子邮件,使其变为“google@support.com”,例如将“[at]”转换为@。

提前谢谢您。

最佳答案

第一个问题:实际上邮件地址从来不允许空格,所以我会简单地通过类似的方式删除所有空格

searchWord = searchWord.replaceAll("\\s+","")

第二个问题:您的 pattern2 包含空格 ([\\w\\-]([\\.\\w])+[\\w]+_HERE_ARE_WHITESPACES_\\( at\\)([\\w\\-]+\\.)+[A-Za-z]{2,4})。 因此它找不到邮件地址。

此外,您的模式还会查找“google(at)support.com”等电子邮件格式,而不是“google[at]support.com”。

要将“(at)”替换为实际的“@”,您需要调整模式2并使用replaceFirst方法。 这是适合我的完整代码。我希望它有帮助。

public static String searchFormail(String searchWord) {

    searchWord = searchWord.replaceAll("\\s+","");

    Pattern pattern = Pattern
            .compile("([_A-Za-z0-9-]+)(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})");
    Pattern pattern2 = Pattern.compile("([\\w\\-]([\\.\\w])+[\\w]+)(\\(at\\))(([\\w\\-]+\\.)+[A-Za-z]{2,4})");

    Matcher matchs = pattern.matcher(searchWord);
    Matcher matchs2 = pattern2.matcher(searchWord);

    if(matchs.find()){
        return searchWord.substring(matchs.start(), matchs.end());
    }
    else if(matchs2.find()){
        return matchs2.replaceFirst("$1@$4");
    }

    return null;
}

关于Java正则表达式电子邮件替换所有空格和 "[at]"符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44910902/

相关文章:

java - 从 netbeans GUI 中的组合框获取值

java - 使用并行流返回最快的提供值

将 log4j 1.2.17 更新到 2.13.0 后出现 java.lang.ClassNotFoundException : org. apache.logging.log4j.Logger

java - ByteBuffer,什么是检测是否需要翻转的干净方法

python - 如何检测谷歌应用引擎中的退回邮件?

excel - 从 Excel Loop 创建电子邮件

java - 在另一个对象中更新对象的最佳方法

python - 使用邮箱python提取附件?

perl - 如何在 Perl 中将文件内容作为电子邮件发送?

html - 电子邮件 HTML 签名;当我改变表格大小时字体大小改变