我使用以下正则表达式模式来验证工作正常的电子邮件地址,但是我需要在@
之前验证字符的长度,这应该不少于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>
答案 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)这样的东西就足够了。