将短划线添加到Java正则表达式

我试图修改从其他人构建的Java程序的属性文件中提取的现有Regex表达式。

用于匹配电子邮件地址的当前正则表达式是 -

RR.emailRegex=^[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+.[a-zA-Z0-9_]+$

它匹配诸如abc.xyz@example.com等电子邮件地址,但现在有些电子邮件地址中包含破折号,例如abc-def.xyz@example.com,并且这些地址不符合正则表达式匹配。

我的新正则表达式是什么将这个正则表达式匹配添加到破折号还是有更好的方式来表示它吗?


基于你正在使用的正则表达式,你可以在你的角色类中添加破折号:

RR.emailRegex=^[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+.[a-zA-Z0-9_]+$
add
RR.emailRegex=^[a-zA-Z0-9_.-]+@[a-zA-Z0-9_-]+.[a-zA-Z0-9_-]+$

顺便说一句,你可以像这样缩短你的正则表达式:

RR.emailRegex=^[w.-]+@[w-]+.[w-]+$

无论如何,我会像这样使用Apache EmailValidator:

if (EmailValidator.getInstance().isValid(email)) ....

-在字符类中的含义与在别处使用的不同。 里面的人物类-表示范围。 例如0-9 。 如果您想包含- ,请将其写入字符类的开始或结尾,如[-0-9][0-9-] [-0-9] [0-9-]

你也不需要逃跑. 内部的字符类,因为它被视为. 字面上在字符类。

您的正则表达式可以进一步简化。 w表示[A-Za-z0-9_] 。 所以你可以使用

^[-w.]+@[w]+.[w]+$

在Java中,这可以写成

^[-w.]+@[w]+.[w]+$

正确的正则表达式修复如下。

OLD正则表达式

^[a-zA-Z0-9_.]+@[a-zA-Z0-9_]+.[a-zA-Z0-9_]+$

新的正则表达式

^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$
链接地址: http://www.djcxy.com/p/92877.html

上一篇: Add Dash to Java Regex

下一篇: Regular Expression to validate email ending in .edu