[英]Java Regex X{n,m} X, at least n but not more than m times
我正在尝试了解如何将电子邮件地址与以下模式匹配:
myEmail@something.any
any应该在2,4个字符之间。
请在下面找到Java代码。 我不明白为什么它返回true。 谢谢!
public static void main(String[] args){
String a = "daniel@gmail.com";
String b = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+.[a-zA-Z]{2,4}";
String c = "MyNameis1@abcx.comfff";
Boolean b1 = c.matches(b);
System.out.println(b1);
}
输出:真
在正则表达式中.
匹配任何字符(换行符除外)。 如果要搭配.
从字面上看,您需要对其进行转义:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+\\.[a-zA-Z]{2,4}
这样比较好,但是仍然与MyNameis1@abcx.comf
部分匹配。 我们可以添加一个字符串锚( $
)的末尾,以确保没有结尾的不匹配字符:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+\\.[a-zA-Z]{2,4}$
逃脱.
在String b = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+.[a-zA-Z]{2,4}";
。 它是正则表达式中的特殊字符。
用法: String b = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+\\\\.[a-zA-Z]{2,4}";
在您的表情中,点表示任何字符。 转义并确保没有字符跟随您的最小/最大字符检查,如下所示:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+\\.[a-zA-Z]{2,4}$
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.