繁体   English   中英

如何检查仅包含字母(大写和小写)以及至少一个数字的字符串

[英]How do i check string to contain only letter(Uppercase & Lowercase) and at least one number only

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

例:

String str = "%$!@asdas"

String str2 = "He110W0rLd"

我希望它拒绝str但接受str2

它给我这个吉斯 在此处输入图片说明

基于@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:是的

:是

您好:否

3424234:否

更新:高位正则表达式会将HELLO1视为可接受的 ,因为它不会强制小写字母,因此也添加此检查的JAVA字符串将是:

"(?=.*[A-Z])(?=.*[0-9])(?=.*[a-z])[a-zA-Z\\d]+"
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM