这是我的Java代码:
String patternParticipants = "([\\w\\.=-]+@[\\w\\.-]+\\.[\\w]{2,3}($|\n))*";
Pattern p = Pattern.compile(patternParticipants, Pattern.MULTILINE);
boolean matchesParticipants = p.matcher(reservation.getParticipants().trim()).matches();
我想匹配以下字符串:
john.wales@gmail.com
david.chrome@gmail.com
david.mika@gui.co
出于某种原因,只有在给出一个电子邮件地址时,匹配器才会返回true
。
我试图将它设置为MULTILINE,但这似乎也不起作用。有什么想法吗?
答案 0 :(得分:1)
首先剥离换行符,然后在其上运行RegEx。
使用这样的代码去掉'\ n'。
String text = readFileAsString("textfile.txt");
text.replace("\n", "");
P.S:您的数据位于textfile.txt中。
稍后,请使用此RegEx。
"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$"
答案 1 :(得分:0)
这会在每个地址之后查找换行符(\n
)或字符串结尾($
):
static boolean isValidEmailList(String str)
{
return str.matches("([\\w\\.=-]+@[\\w\\.-]+\\.[\\w]{2,3}($|\n))+");
}
您的正则表达式将错误地使许多有效的电子邮件地址无效,并允许一些无效的地址。但这是使其适用于多行输入的一种方法。
答案 2 :(得分:-1)
^ [_ A-ZA-Z0-9 - \ +] +(\ [_ A-ZA-Z0-9 - ]。+)* @ [A-ZA-Z0-9 - ] +(\ [A-ZA-Z0-9] +。)*(\ [A-ZA-Z] {2}。。。)$;
你应该使用这个用于电子邮件