利用正则表达式简单判断账号密码等
1、判断账号必须为英文,不能有其他符号,限制长度范围6-12之间
//(pattern\compile\CASE_INSENSITIVE\Matcher\find()\group())
Parrern pp=Pattern.compile("^[a-z]{6,12}$",Pattern.CASE_INSENSITIVE\trim);
Matcher matcher=pp.matcher("jack".trim());
System.out.println(matcher.find());
2、判断一个账号名称,必须字母开头,可以有数字,长度必须在6位以上
System.out.println("dafe51sf".matches("^[a-z][a-zA-Z0-9]{5,}$"));
3、要求用户姓名,要么是中文,要么是英文,不可以中英文混合。
System.out.println("".matches("^[\\u4e00-\\u9fa5]+ | [a-zA-Z]+$"));
4、取出字符串中的所有数字
String ss="f564a456aasg5a4s66a3dag";
// \\d+ 改为 \\d 为一个数字一个数字输出
Pattern p3= Pattern.compile("\\d+");
Matcher m3=p3.matcher(ss);
while(m3.find()) {
System.out.println(m3.group());
}
5、取出字符串中的所有数字并求和
String sss="f564a456aasg5a4s66a3dag";
Pattern p4= Pattern.compile("\\d+");
Matcher m4=p4.matcher(sss);
int sum=0;
while(m4.find()) {
int num=Integer.valueOf(m4.group());
sum+=num;
//System.out.println(m4.group());
//去掉注释就可以输出字符串中所有数字
}
System.out.println(sum);
6、字符串中表达式运算:123-45-67+89;
String ssss = "123-45-67+89";
Pattern ppp=Pattern.compile("[0-9]+|-\\d+");
Matcher mmm=ppp.matcher(ssss);
int sum2=0;
while(mmm.find()) {
sum2+=Integer.parseInt(mmm.group());
}
System.out.printf("%s=%d",ssss,sum2);
**
7、给出1-9数字组成的字符串,提取并且排列组合加减法得数为100**
public static void main(String[] gars) {
String [] rs=new String[] {
"","+","-"};
Random random=new Random();
StringBuilder s=new StringBuilder();
int n=0;
while(true) {
s.append("1");
for (int i = 2; i < 9; i++) {
s.append(rs[random.nextInt(rs.length)]);
s.append(i);
}
s.append("9");
if (check(s.toString())) {
System.out.printf("%s=100\n",s.toString());
++n;
}
s.delete(0, s.length());
if (n>=5)
break;
}
}
//判断方法
public static boolean check(String str) {
//返回类型为布尔(boolean)
//定义变量flag的值为 false
boolean flag = false;
//利用正则表达式提取字符串中的数字
Pattern pp = Pattern.compile("[0-9]+|-\\d+");
Matcher mm = pp.matcher(str);
int sum = 0;
while (mm.find()) {
sum += Integer.parseInt(mm.group());
}
if (sum == 100)
flag = true;
return flag;
}