我有正则表达式的问题。不知何故,在线regextester不能使用该模式。
我想允许
mymail@whatever.com
和
mymail1@whatever.com;mymail2@whatever.com;mymail3@whatever.com
所以一个没有分号和多个分号之间,但不是最后
我有什么:
private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
public EmailValidator() {
pattern = Pattern.compile(EMAIL_PATTERN);
}
public boolean valid(final String email) {
matcher = pattern.matcher(email);
return matcher.matches();
}
答案 0 :(得分:1)
只需将锚点之间的模式作为单个电子邮件匹配子模式,并使用它来构建最终模式:
private static final String SINGLE_EMAIL_PATTERN = "[_A-Za-z0-9-+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})";
private static final String EMAIL_PATTERN = "^" + SINGLE_EMAIL_PATTERN + "(?:;" + SINGLE_EMAIL_PATTERN + ")*$";
您的模式看起来像the one here。
^
- 将断言字符串的开头SINGLE_EMAIL_PATTERN
- 将匹配1封电子邮件(?:;<SINGLE_EMAIL_PATTERN>)*
- 将匹配0个或更多序列:
;
- ;
<SINGLE_EMAIL_PATTERN>
- 一封电子邮件$
- 将断言字符串的结尾。答案 1 :(得分:1)
看看这个适合你:
$aggregation = new DateHistogram('clicks_by_day', 'date', 'day');
$query->addAggregation($aggregation);