正则表达式匹配邮箱

简介: <div style="font-family:微软雅黑; font-size:14px; line-height:21px"> <div style="background-color:inherit">本文首写于个人有道云笔记:<span style="white-space:pre"> <a target="_blank" href="http://note.youdao.com

java.util.regex.PatternSyntaxException: Illegal character range near index 24
[a-zA-Z0-9]+[a-zA-Z0-9_-.]*@([a-zA-Z0-9_-]+.)+[a-zA-Z_-]+
                        ^

正则表达式报错,说明有未转义的字符。

        括号内中的字符类,在“-”左右两边有字符时表示一个字符到另一个字符之间的字符。
而且必须是左边字符的值小于右边字符的值。

. 若表示点号本身需要转义(反斜杠\)正左反右

在普通的正则表达式中,15个具有特殊意义的元字符需要进行转义:
( [ { } ] ) \ ^ - $ | ? * + .

而在字符类中有点特殊,需要转义的有:
[ ] ^ - \

其中“-”放在字符类的两边的话,即放在左方括号右者右方括号的边上,也可以不用转义。
1
( 0 |([ 1 - 9 ][ 0 - 9 ]*)[+\\-*/])+( 0 |[ 1 - 9 ][ 0 - 9 ]*)


或者写成下面这样,即把“-”放到两边去,就不要转义了。
1
( 0 |([ 1 - 9 ][ 0 - 9 ]*)[-+*/])+( 0 |[ 1 - 9 ][ 0 - 9 ]*)

实例:

正则表达式匹配邮箱

// DNS规定,域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母。

// 现在各级域名均可以包含中文

// 域名可以只有一位,如亚马逊 http://www.Z.cnhttp://www.4.cn,顶级域名貌似至少两位,这里暂不限制。

// 标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的域名写在最右边。

// 由多个标号组成的完整域名总共不超过255个字符。

// 创新工场域名:innovation-works.com,带-熟称扁担域名,貌似也有-开头的域名。

// 网易企业邮:帐号只能以字母或数字开头,可包含字母,数字,下划线(_),减号(-)和点(.)实际验证最长200@cx.cf1.@cx.cf。

// 网易邮:邮箱名6-18位;新浪字母邮、搜狐:邮箱名4-16位



// 匹配非中文邮箱

public void regexTest() {

        String str = "sd速度-1-@-1-.com.cn!但是!";

        String regex = "[a-zA-Z0-9][a-zA-Z0-9_\\-\\.]{0,19}@(?:[a-zA-Z0-9\\-]+\\.)+[a-zA-Z]+";

        Matcher matcher = Pattern.compile(regex).matcher(str);

        while (matcher.find()) {

            regex = matcher.group();

            System.out.println("test:" + regex);

        }

    }

"[a-zA-Z0-9][a-zA-Z0-9_\\-\\.]{0,19}@(?:[a-zA-Z0-9\\-]+\\.)+[a-zA-Z]+"

如:xf1-d@-1-.com.cn

( ? : exp )匹配exp,不捕获匹配的文本到自动命名的组,也不给此分组分配组号,也就不会让内存等着你再次访问。

匹配中文邮箱:(默认中文、英文字母、数字开头,不包含下划线,可包含中文,英文字母,数字,下划线(_),减号(-)和点(.))

String regex = "[\u4e00-\u9fa5a-zA-Z0-9][\u4e00-\u9fa5_a-zA-Z0-9\\-\\.]{0,19}@(?:[\u4e00-\u9fa5a-zA-Z0-9\\-]+\\.)+[\u4e00-\u9fa5a-zA-Z]+";

匹配结果:sd速度-x.f1-d@-1-.com.cn

中文 、下划线 、英文字母、数字: [\u4e00-\u9fa5_a-zA-Z0-9]
不要用 \w他匹配的是包括下划线的任何单词字符。类似但不等价于“[ A-Za-z0-9_ ]”,这里的"单词"字符使用Unicode字符集,包括俄文等单词如а



xf1-d@-1-.com.cn
[a-zA-Z0-9]
[a-zA-Z0-9_\\ -.]
{1,19}
@
(
[a-zA-Z0-9\\-]
+
\\.
)+
[a-zA-Z]+
字母数字开头
字母,数字,下划线(_),减号(-)和点(.);
1


域名:字母、数字、连字符
1
域名间的点,需转义
1
域名后缀
- 需转义》 \- 》转义符也需转义 \\-
到19次

或 *
更多次
更多次
x f1-d @

-1- .

cn




-1-.com.


 
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
28天前
|
移动开发 JavaScript 前端开发
JavaScript的正则表达式实现邮箱校验
JavaScript的正则表达式实现邮箱校验
45 1
常用的正则表达式,手机号,邮箱,银行卡等待......
常用的正则表达式,手机号,邮箱,银行卡等待......
|
17天前
|
网络协议 JavaScript 前端开发
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名2
使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名
227 0
|
8月前
邮箱-手机账号格式如何进行正则表达式校验
邮箱-手机账号格式如何进行正则表达式校验
465 0
|
11月前
|
数据格式
用正则表达式校验手机号和邮箱
用正则表达式校验手机号和邮箱
604 0
|
11月前
|
Python
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
Python正则表达式匹配电话号码和邮箱实例演示,正则表达式的基本用法
204 0
|
11月前
|
移动开发 JavaScript 前端开发
JavaScript的正则表达式实现邮箱校验
JavaScript的正则表达式实现邮箱校验
133 0
|
JavaScript 前端开发
JavaScript使用正则表达式进行邮箱表单验证实例
JavaScript使用正则表达式进行邮箱表单验证实例
62 0
|
C# 计算机视觉
利用正则表达式判断邮箱
日常开发中,判断邮箱是少不了的,这个我以C#为例,来写一个判断方法,正则表达式是通用的,CV就可以
117 0