我正在尝试创建一个验证文本的正则表达式。条件如下:
必须至少包含一个字母数字字符[A-Za-z0-9]
可以包含允许的特殊字符,如[@#]。这是可选的。
有效文字:A,A @,@ A,A @ a @,@@ @ a等
文字无效: @,@#,a:**,A @%,AAAAAAAAA(9个字符)等
我已尝试过以下正则表达式,但它部分有效:
(适用?= [\ W])(?=。 [@#])?。* {0,8}
答案 0 :(得分:1)
答案 1 :(得分:0)
在matches
方法中使用以下正则表达式。
"(?=.*?[A-Za-z0-9])[A-Za-z0-9@#]{1,8}"
(?=.*?[A-Za-z0-9])
断言字符串必须包含至少一个字母或数字,因此匹配中必须存在单个字符。这就是我定义[A-Za-z0-9@#]{1,8}
而不是[A-Za-z0-9@#]{0,8}
String[] check = {"A", "A@", "@A", "A@a@", "@@@a", "@", "@#", "a:**", "A@%", "AAAAAAAAA"};
for(String i: check)
{
System.out.println(i.matches("(?=.*?[A-Za-z0-9])[A-Za-z0-9@#]{1,8}"));
}
<强>输出:强>
true
true
true
true
true
false
false
false
false
false
答案 2 :(得分:0)
您可以使用:
^(?=.*?[A-Za-z0-9])[@#A-Za-z0-9]{1,8}$
答案 3 :(得分:0)
您可以尝试这样的正则表达式:
public static void main(String[] args) {
String s = "aaaaaaa";
System.out.println(s.matches("(?=.*[A-Za-z0-9])[A-Za-z0-9@#]{1,7}"));
}
O / P: 真