【发布时间】:2016-11-24 04:28:48
【问题描述】:
我正在尝试编写 antlr 词法分析器语法规则来验证电子邮件地址我已经完成了大部分工作,但是我无法验证字符 '.'不连续出现。例如,我的代码传递了不应传递的示例 localpart..domainpart@xyz.com。 我已经尝试了几个正则表达式,但似乎没有任何效果。有人可以在这里帮助我吗,我刚开始学习这个,所以我不太了解。这是我到目前为止所拥有的。
fragment LOCALCHARS_first_last : [a-zA-Z0-9-_~!$&'()*+,;=:]; //local part must not include character '.'
fragment LOCALCHARS : [a-zA-Z0-9-_~!$&'.()*+,;=:]+;
fragment LOCALPART: LOCALCHARS_first_last LOCALCHARS LOCALCHARS_first_last; //'.' cannot be first or last character
fragment DOMAINPART: [a-zA-Z0-9-.]+;
fragment EMAIL: LOCALPART '@' DOMAINPART;
CHECKEMAIL: (EMAIL) {
System.out.println("valid email: "+getText());
};
【问题讨论】: