Java中的正则表达式无法正常工作

时间:2018-02-15 17:59:45

标签: java regex

我试图在Java中为电子邮件地址创建一个Regex表达式而且我被卡住了。当我使用一些在线Regex测试仪时,它工作正常,但在Java中它似乎并不想工作。

这是我的表达: [a-zA-Z!$.&\\d]{4,24}[@][a-zA-Z]{2,}[.edu|.com|.net]

应该是:

  • 一个4-24个字符的用户名,可以有数字,"。","&"," $",和 "!"在其中
  • " @"
  • 后面的人物
  • 域名至少有2个字符,但可以包含类似的内容 " school.alt"
  • ,结尾只能是" .net"," .com",或" .edu"。

无法弄清楚我做错了什么。

即使我使用简单的电子邮件测试它,例如" test@school.edu"它不匹配。

2 个答案:

答案 0 :(得分:3)

您可以使用|

将正则表达式的结尾更改为非捕获组

(?:\.edu|\.com|\.net)

或者@Bohemian评论你可以把这个simpeler写成\.(?:edu|com|net)

目前您正在使用character class [.edu|.com|.net]

[a-zA-Z!$.&\d]{4,24}[@][a-zA-Z]{2,}(?:\.edu|\.com|\.net)

答案 1 :(得分:0)

您的正则表达式中有一些错误。

  1. \\d也会验证抄送号码,例如:پنجشش。所以你应该使用[0-9]。
  2. 不需要@左右的大括号。
  3. 上次展示.edu|.com|.net必须在圆括号中。 (.edu|.com|.net)。因为它不是一组字符,所以它是一个严格的表达式。点也可以放在括号内。 \.(edu|com|net)
    1. 您应该在正则表达式之前和之后添加^$以验证总字符串。
  4. 所以你的正则表达式将是: ^[a-zA-Z!$.&0-9]{4,24}@[a-zA-Z]{2,}\.(edu|com|net)$