电子邮件验证 - 在@之前和之前的字符长度

时间:2015-05-15 10:41:21

标签: regex validation jsf-2 primefaces

我使用以下正则表达式模式来验证工作正常的电子邮件地址,但是我需要在@之前验证字符的长度,这应该少于4个字符。我应该在@之后和点.之前为字符长度添加相同的规则。

例如,此电子邮件地址有效: a@b.c

但是,这个应该是有效的: abcd@abcd.com

我该怎么做?

这是我目前的尝试:

<ui:define name="validation-tag">
    <f:validateRegex 
        pattern="([\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])*"
        for="contactEmailAddress" />
</ui:define>

3 个答案:

答案 0 :(得分:4)

我们可以使用带有锚点的正面预测来施加长度限制。

^(?=[^@]{4,}@)([\w\.-]*[a-zA-Z0-9_]@(?=.{4,}\.[^.]*$)[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])$

^$会使字符串在开始和结束时匹配,然后(?=[^@]{4,}@)将确保我们在第一个@之前至少有4个字符,并且(?=.{4,}\.[^.]*$)将确保最后.之前的部分长度至少为4个符号。

请参阅demo

答案 1 :(得分:1)

您可以在一系列有效字符后使用try { pStat = con.prepareStatement("select * from myobjects"; ResultSet rSet = pStat.executeQuery(); while(rSet.next()){ objName = rSet.getString(1); subObjName = rSet.getString(2); objType = rSet.getString(3); objDDL = rSet.getClob(4); } rSet = null; } catch (SQLException e) { e.printStackTrace(); } pStat = null; 来指定您至少需要它们。因此,请尝试以下模式:

{4,}

答案 2 :(得分:0)

请注意太复杂的电子邮件正则表达式。用户仍然可以犯错误(例如tom@mycompny.com而不是tom@mycompany.com),您可能会有误报。

也许像/.*\@(.{2,}\.)+.{2,}/test it here)这样的东西就足够了。