Java正则表达式不适用于MULTILINE条目

时间:2015-02-18 17:50:02

标签: java regex

这是我的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,但这似乎也不起作用。有什么想法吗?

3 个答案:

答案 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}。。。)$;

你应该使用这个用于电子邮件