故事背景

今天面试遇到这道题,对正则表达式还是有些懵,面试完回家复盘实现一下。这里使用到了 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);
} }

面试题 正则表达式 验证邮箱 Pattern.matches的更多相关文章

  1. favicon.ico应用与正则表达式验证邮箱(可自动删除前后的空格)

    1.favicon.ico制作:favicon.ico可以ps制作;“shortcut icon”中间有一个空格 <head> <link rel="shortcut ic ...

  2. web开发常用的js验证,利用正则表达式验证邮箱、手机、身份证等输入

    正则表达式验证 //邮箱 \-])+\.)+([a-zA-Z0-]{,})+$/; email = document.getElementById("email").value; ...

  3. java正则表达式验证邮箱、手机号码

    /** * 验证邮箱地址是否正确 * @param email * @return */ public static boolean checkEmail(String email){ boolean ...

  4. Android 使用正则表达式验证邮箱格式是否正确

    /** * 验证邮箱格式是否正确 */ public boolean emailValidation(String email) { String regex = "\\w+([-+.]\\ ...

  5. js中通过正则表达式验证邮箱是否合法

    文章目录 1.效果展示 2.问题描述 3.代码实现 1.效果展示 2.问题描述 当用户在输入框输入邮箱后.点击验证邮箱按钮.系统给出提示信息. 3.代码实现 <!DOCTYPE html> ...

  6. jQuery邮箱验证正则表达式验证邮箱合法

    if($.trim(email)==''||$.trim(email)=='邮    箱:'||$.trim(email)==null){ alert('邮箱不能为空!'); return false ...

  7. java 正则表达式验证邮箱格式是否合规 以及 正则表达式元字符

    package com.ykmimi.testtest; /** * 测试邮箱地址是否合规 * @author ukyor * */ public class EmailTest { public s ...

  8. java 正则表达式 验证邮箱

    import java.util.regex.Matcher; import java.util.regex.Pattern; public class demo1 { /**java正则表达式 * ...

  9. javascript平时小例子②(正则表达式验证邮箱)

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>邮 ...

随机推荐

  1. tomcat访问所有的资源,都是用Servlet来实现的

    感谢大佬:https://www.zhihu.com/question/57400909 tomcat访问所有的资源,都是用Servlet来实现的. 在Tomcat看来,资源分3种 静态资源,如css ...

  2. mac不能用ip访问项目的, 还有80端口不能开启的问题

    开启80端口 参考这篇文章 解决mac无法使用80端口问题,亲测可用 1. 防火墙设置问题 2. 网卡问题 3. 服务器地址配置问题

  3. Callable接口及Futrue接口详解

    Callable接口 有两种创建线程的方法-一种是通过创建Thread类,另一种是通过使用Runnable创建线程.但是,Runnable缺少的一项功能是,当线程终止时(即run()完成时),我们无法 ...

  4. js中(function(){}()),(function(){})(),$(function(){});之间的区别

    1. (function(){}())与(function(){})() 这两种写法,都是一种立即执行函数的写法,即IIFE (Immediately Invoked Function Express ...

  5. 3.Flink实时项目之流程分析及环境搭建

    1. 流程分析 前面已经将日志数据(ods_base_log)及业务数据(ods_base_db_m)发送到kafka,作为ods层,接下来要做的就是通过flink消费kafka 的ods数据,进行简 ...

  6. Net6 DI源码分析Part4 CallSiteFactory ServiceCallSite

    Net6 CallSiteFactory ServiceCallSite, CallSiteChain abstract class ServiceCallSite ServiceCallSite是个 ...

  7. JSP页面 CTRL+F 功能实现

    .res { color: rgba(255, 0, 0, 1) } .result { background: rgba(255, 255, 0, 1) } --- js 部分 var oldKey ...

  8. drop、truncate、delete的区别

    (1)DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作. TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独 ...

  9. 基于GDAL库,读取.nc文件(以海洋表温数据为例)C++版

    对于做海洋数据处理的同学,会经常遇到nc格式的文件,nc文件的格式全称是NetCDF,具体的详细解释请查询官网[https://www.unidata.ucar.edu/software/netcdf ...

  10. soc AXI接口术语和特性

    AXI接口术语和特性 1.outstanding 2.interleaving 3.out-of-oder 4.写数据可以优先于写地址 5.大小端 小端:低地址数据放在总线bus的低位. 大端:低地址 ...