我试图了解如何将电子邮件地址与以下模式匹配:
myEmail@something.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);
}
OUTPUT:true
答案 0 :(得分:4)
在正则表达式中,.
匹配任何字符(换行符除外)。如果你想按字面意思匹配.
,你需要逃避它:
[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}$
答案 1 :(得分:0)
逃离.
中的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}";
答案 2 :(得分:0)
在你的表达中,dot表示任何角色。转义并确保没有字符跟随你的最小/最大字符检查后发布如下:
[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.+-]+\\.[a-zA-Z]{2,4}$