Java中的正则表达式不起作用
我试图用Java为电子邮件地址创建一个正则表达式,但我被卡住了。当我使用一些在线正则表达式测试程序时,它工作得很好,但在Java中它似乎不想工作 以下是我的表达:Java中的正则表达式不起作用,java,regex,Java,Regex,我试图用Java为电子邮件地址创建一个正则表达式,但我被卡住了。当我使用一些在线正则表达式测试程序时,它工作得很好,但在Java中它似乎不想工作 以下是我的表达: [a-zA-Z!$.&\\d]{4,24}[@][a-zA-Z]{2,}[.edu|.com|.net] 它应该是: 4-24个字符的用户名,可以有数字“.”、“&”、“$”和“ “!”在里面 “@”字符后面 域至少包含2个字符,但可以包含以下内容 “学校,alt” 并且结尾只能是“.net”、“.com”或“.edu” 不知道我
[a-zA-Z!$.&\\d]{4,24}[@][a-zA-Z]{2,}[.edu|.com|.net]
它应该是:
- 4-24个字符的用户名,可以有数字“.”、“&”、“$”和“ “!”在里面
- “@”字符后面
- 域至少包含2个字符,但可以包含以下内容 “学校,alt”
- 并且结尾只能是“.net”、“.com”或“.edu”
即使我用一封简单的电子邮件来测试它,比如“test@school.edu“它不匹配。您可以使用
|
或以下命令将正则表达式的结尾更改为非捕获组:
(?:\.edu\.com\.net)
或者,正如@Bohemian所评论的,您可以将这个模拟程序编写为\(?:edu|com|net)
现在您正在使用[.edu|.com|.net]
正则表达式中有一些错误
\\d
还将验证prrsian编号,例如:或或或或或或。所以你应该使用[0-9]
@
周围不需要大括号.edu | com |.net
必须放在圆括号内(.edu | com |.net)
。因为它不是一组字符,它是一个严格的表达式。也可以将点从括号中取出<代码>\(教育网)。
^
和$
以验证总字符串^[a-zA-Z!$.&0-9]{4,24}-[a-zA-Z]{2,}\(edu | com | net)$
正确(除了它被称为字符类,而不是字符集),或者更简单:\(?:edu | com | net)
@Bohemian啊好的,谢谢!然后我猜答案并不完全正确:“使用一个“字符类”,也称为“字符集”,“可能相关”,从regexp的部分开始,一步一步地进行,直到您发现它的哪些部分不能作为预期的邮件地址工作。考虑一下你是否真的想要这个。(另外,您的域名当前不能包含“school.alt”)。