据我所知,验证名字字段是非常有争议的,因为有很多不同的可能性。但是,我只是在学习正则表达式并且努力帮助理解这个概念,我设计了一些简单的验证来创建,只是尝试确保我能够使代码完全按照我的要求进行,尽管它是否是符合最佳业务逻辑实践。
我正在尝试验证一些事情。
第一个名称只能以a-z(忽略大小写)字符结尾。
public static boolean firstNameValidation(String name){
valid = name.matches("(?i)(^[a-z]+)[a-z .,-]((?! .,-)$){1,25}$");
System.out.println("Name: " + name + "\nValid: " + valid);
return valid;
}
答案 0 :(得分:0)
你的表情几乎是正确的。以下是满足所有条件的修改:
valid = name.matches("(?i)(^[a-z])((?![ .,'-]$)[a-z .,'-]){0,24}$");
答案 1 :(得分:0)
相同的正则表达式:
var lookup = ["010101010", "0100101010", "01010101010", "etc"];
function foo() {
// lookup is undefined
}
答案 2 :(得分:0)
让我们改变要求的顺序:
"(?i)"
"(?i)[a-z]"
"(?i)[a-z](.*[a-z])?"
"(?i)[a-z](.{0,23}[a-z])?"
"(?i)[a-z]([- ',.a-z]{0,23}[a-z])?"
最后一个应该做的工作:
valid = name.matches("(?i)[a-z]([- ',.a-z]{0,23}[a-z])?")
在RegexPlanet上测试(按java按钮)。
上述注意事项
"[a-zA-Z]"' instead of
“(?i)”'?
,因为我们想要允许一个字符名称-
必须来[]
内的第一个(或最后一个),否则它被解释为范围sepparator(假设您不是指{{1}之间的字符}和'
)答案 3 :(得分:0)
试试这个正则表达式
^[^- '](?=(?![A-Z]?[A-Z]))(?=(?![a-z]+[A-Z]))(?=(?!.*[A-Z][A-Z]))(?=(?!.*[- '][- '.]))(?=(?!.*[.][-'.]))[A-Za-z- '.]{2,}$
答案 4 :(得分:0)
试试这个最简单的版本:
^[a-zA-Z][a-zA-Z][-',.][a-zA-Z]{1,25}$
感谢分享。