我正在尝试使用以下规则在Java中创建用户名链:
- 长度≥3
- 有效字符:a-z、A-Z、0-9、点、破折号和下划线。
有人可以帮我写正则表达式吗?
我正在尝试使用以下规则在Java中创建用户名链:
有人可以帮我写正则表达式吗?
试试这个正则表达式:
^[a-zA-Z0-9._-]{3,}$
Sarkiroka的解决方案是正确的,但忘记了破折号,点号应该转义。
您应该添加\来进行转义,但请注意,在Java中反斜杠本身被用于转义,因此如果您要在Java文件中编写正则表达式,则应该写
String regex = "[a-zA-Z0-9\\._\\-]{3,}";
.
,也可能不需要转义-
,因为它是类中的最后一个(但我不确定Java如何处理这个)。 - Qtax顺便提一下,如果要求用户名的首字母必须是一个字符,您可以编写以下代码:
try {
if (subjectString.matches("\\b[a-zA-Z][a-zA-Z0-9\\-._]{3,}\\b")) {
// Successful match
} else {
// No match
}
} catch (PatternSyntaxException ex) {
// Invalid regex
}
根据此处的示例。
这个怎么样:
username.matches("[a-zA-Z0-9.\\-_]{3,}")
^
和结束符号$
(尽管Java的.matches()
方法会隐式地执行此操作)。 - ridgerunner