我想知道如何编写一个正则表达式来检查字符串是否包含至少一个大写和数字而且不包含任何符号?
示例:
String str = "%$!@asdas"
String str2 = "He110W0rLd"
我希望它拒绝str
但是接受str2
。
答案 0 :(得分:1)
根据@anubhava评论,试试这个:
作为JAVA字符串:
"(?=.*[A-Z])(?=.*[0-9])[a-zA-Z\\d]+"
作为正则表达式:
(?=.*[A-Z])(?=.*[0-9])[a-zA-Z\d]+
此网站可以提供帮助http://www.regexplanet.com/advanced/java/index.html
你好:没有
He11o:是的
heLl1o:是的
你好:没有
3424234:否
<强>更新强>
上层正则表达式将HELLO1
作为可接受的,因为它不强制小写,添加此检查也是JAVA字符串:
"(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])[a-zA-Z\\d]+"
答案 1 :(得分:0)
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
List<String> names = new ArrayList<String>();
names.add("");
names.add("%$!@asdas"); // Incorrect
names.add("He110W0rLd");
names.add("Techyshy");
names.add("TechyShy123");
names.add("Techy$hy123-"); // Incorrect
String regex = "^[a-zA-Z0-9]+$";
// Use "^[a-zA-Z0-9]*$" if blank input is also a valid input.
Pattern pattern = Pattern.compile(regex);
for (String name : names) {
Matcher matcher = pattern.matcher(name);
System.out.println(matcher.matches());
}
}
}
Output:
false
false
true
true
true
false