我如何检查字符串只包含字母(大写和小写)和至少一个数字

时间:2015-10-23 18:34:55

标签: java regex passwords

我想知道如何编写一个正则表达式来检查字符串是否包含至少一个大写和数字而且不包含任何符号?

示例:

String str = "%$!@asdas"

String str2 = "He110W0rLd"

我希望它拒绝str但是接受str2

它给了我这个JEES enter image description here

2 个答案:

答案 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