面试题 正则表达式 验证邮箱 Pattern.matches
故事背景
今天面试遇到这道题,对正则表达式还是有些懵,面试完回家复盘实现一下。这里使用到了 Pattern 这个类来校验正则表达式。
正则表示式分析:
^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$
#分解: ^ #匹配字符串的开始位置。 ([a-z0-9A-Z]+[-|\\.]?)+ # [a-z0-9A-Z]:匹配上述任何一个。 +:匹配一次或多次前面的原子。 [-|\\.]:指定字符。?:匹配0次、1次前面的原子 [a-z0-9A-Z] # [a-z0-9A-Z]:匹配上述任何一个。 @ # 固定字符 ([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+ # [a-z0-9A-Z]:匹配上述任何一个。 +:匹配一次或多次前面的原子。?:匹配0次、1次前面的原子。 \\.:转义符,把特殊字符转义为字符串的.。 +:匹配一次或多次前面的原子。 [a-zA-Z]{2,} # [a-zA-Z]:匹配大小写字母。{2,}:前面的原子至少出现两次 $ #匹配字符串的结束位置。
特殊字符
正则表达式识别的特殊字符包括:.*[]^${}\+?|()
如果要用某个特殊字符作为文本字符,就必须 转义 。在转义特殊字符时,你需要在它前面加一个特殊字符反斜杠(\)来告诉正则表达式引擎应该将接下来的字符当作普通的文本字符。
图解
代码实现
package ffffl.cn.test; import java.util.Scanner; import java.util.regex.Pattern; /** * @author chihiro * 面试题: * 1. 正则表达式 验证邮箱 */ public class demo1 { // 正则表达式 public static final String REGEX_EMAIL = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; public static void main(String[] args) { demo1 demo1 = new demo1(); demo1.enter(); } public void enter(){ Scanner scanner = new Scanner(System.in); for (int i = 0; i <10;i++){ if (scanner.hasNext()) { String s = scanner.next(); System.out.println(s); Boolean email = isEmail(s); if (email){ System.out.println("验证通过!"); }else{ System.out.println("验证不通过!"); } } } scanner.close(); } // 校验邮箱 public Boolean isEmail(String email){ if(email.isEmpty()) { return false; } return Pattern.matches(REGEX_EMAIL,email); } }
本文来自博客园,作者:千寻简,转载请注明原文链接:https://www.cnblogs.com/opxc/p/16014884.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!