我不熟悉Java中的正则表达式工具,尽管它们潜力巨大,但我很难完成这项任务。我想编写一个正则表达式来验证输入字符串,该字符串遵循以下语法:
我想到了以下解决方案:
([/./-_]{0,1}[a-z0-9]){5,}
但在某些情况下,它仍然不起作用,例如,它不匹配允许的特殊字符之一位于中间的字符串(例如he llo)。我哪里出错了?就我而言,还有比这更好的模式吗?
你可以在一个正则表达式中完成这一切:
^ # start string
(?=[^-_.]*[-_.][^-_.]*$) # lookahead fulfilling condition 2
([-_.\w]{5,}) # all allowed characters at least 5
$ # end of string
请参阅regex101.com上的演示,注意在Java中需要使用双反斜杠,这样表达式就变成:
^(?=[^-_.]*[-_.][^-_.]*$)([-_.\\w]{5,})$
不要用正则表达式。由于事物可以以任何顺序出现,因此没有以下情况会更容易:
if (str.length() < 5) {
return false;
}
int specialCharacterCount = 0;
for (int i = 0; i < str.length(); ++i) {
char c = str.charAt(i);
if (Character.isLowerCase(c)) {
// A lowercase letter.
} else if (Character.isDigit(c)) {
// A number.
} else if ("_.-".indexOf(c) >= 0) {
// An allowed special character.
++specialCharacterCount;
} else {
// Some other character - immediately invalid.
return false;
}
}
// Return true if there is at most one of _, . and -.
return specialCharacterCount <= 1;
这个怎么样?您可以使用“向前看”来验证至少有5个字符。
^(?=.{5})[a-z0-9]*([-_.][a-z0-9]*)?$
我希望有一个正则表达式来检查字符串是否包含大小写字母、数字、下划线以及字符限制。这些是字符串中唯一允许的类型。
我试图匹配包含字母数字、连字符、下划线和空格的字符串。 连字符、下划线、空格和数字是可选的,但第一个和最后一个字符必须是字母。 例如,这些都应该匹配: 我试过这个: 但它在开始/结束时与空格、下划线或连字符匹配,但它应该只允许在两者之间。
我需要使用通配符类型搜索筛选一组字符串,如下所示: 寻找应该匹配你好,但不是Helo 查找应该匹配"pant"和"想要"但不匹配"ant" 寻找应该匹配"吉普赛人"和"典型" 代表一个或多个字符。我不介意手写或基于正则表达式的搜索。有什么想法吗?典型的。NET方法的通配符匹配0或更多,但我需要1个或更多字符。我该怎么做?
其中,我需要包括连字符和空格。 这意味着还必须可以输入值“”。
我的输入字段的密码验证要求如下:“密码应至少包含一个大写字母、一个小写字母、一个数字或特殊字符”。 这是1个大写、1个小写、1个数字和一个特殊字符的正则表达式
我有一组由连字符分隔的ID,其中至少可以有6个字符,包含字母数字值和一些特殊字符,在末尾,只有数字值是不允许的。如下所示: 我正在尝试下面给出的具有以下规则的以下模式,但面临一些测试查询的困难... https://regex101.com/r/d8MFRE/5