需求:
判断QQ号码:
1,要求必须是5-15位数字
2,0不能开头
不使用正则表达式
import java.util.Scanner;
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码:");
String qq = sc.nextLine();// 录入QQ号码
System.out.println(checkQQ(qq));// 输出校验
}
public static boolean checkQQ(String qq)// 校验
{
boolean flag = true;
if (qq.length() >= 5 && qq.length() <= 15 && !qq.startsWith("0")) {
char chs[] = qq.toCharArray();
for (int i = 0; i < chs.length; i++) {
char ch = chs[i];
if (!Character.isDigit(ch)) {
flag = false;
break;
}
}
} else {
flag = false;
}
return flag;
}
}
使用正则表达式
/*
* A:字符
* x 字符x。举例:'a'表示字符a
* \\ 反斜线字符
* \n 换行符('\u000A')
* \r 回车符('\u000D')
*
* B:字符类
* [abc] a、b或c(简单类)
* [^ABC] 任何字符,除了a、b或c(否定)
* [a-zA-Z] a到z或A到Z,两头的字母包括在内(范围)
* [0-9] 0到9的字符都包括
*
* C:预定义字符类
* . 任何字符。'\.'用于表示'.'
* \d 数字:[0-9]
* \w 单词字符:[a-zA-Z_0-9]
* 在正则表达式里面组成单词的东西必须有这些东西组成
*
* D:边界匹配器
* ^ 行的开头
* $ 行的结尾
* \b 单词边界
* 就是不是单词字符的地方。
* 举例:hello world?haha;xixi
*
* E:Greedy数量词
* X? X, 一次或一次也没有
* X* X, 零次或多次
* X+ X, 一次或多次
* X{n} X, 恰好n次
* X{n,} X, 至少n次
* X{n,m} X, 至少n次,但是不超过m次
* */
import java.util.Scanner;
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的QQ号码:");
String qq = sc.nextLine();// 录入QQ号码
System.out.println(checkQQ(qq));// 输出校验
}
public static boolean checkQQ(String qq) {// 校验
// String regex="[1-9][0-9]{4,14}";//上下通用
String regex = "[1-9]\\d{4,14}";// 上下通用
boolean flag = qq.matches(regex);
return flag;
}
}
/*
* 判断手机号码是否满足要求
* 11位数字
* */
/*
* 判断手机号码是否满足要求
* 11位数字
* */
import java.util.Scanner;
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的手机号码:");
String phone = sc.nextLine();// 录入手机号码
System.out.println(checkPhone(phone));
}
public static boolean checkPhone(String phone) {// 校验
String regex = "1[3|5|7|8|][0-9]{9}";
boolean flag = phone.matches(regex);
return flag;
}
}
验证邮箱
/*
* 验证邮箱
* */
import java.util.Scanner;
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的邮箱:");
String mail = sc.nextLine();// 录入QQ号码
System.out.println(checkMail(mail));// 输出校验
}
public static boolean checkMail(String mail) {// 校验
String regex = "^[A-Za-zd]+([-_.][A-Za-zd]+)*@([A-Za-zd]+[-.])+[A-Za-zd]{2,5}$";
boolean flag = mail.matches(regex);
return flag;
}
}
-作为分隔符,分隔2个整数
/*
* 正则表达式的分隔
* 年龄18-24
* */
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个年龄搜索范围
String ages = "18-24";
// 定义规则
String regex = "-";
// 调用方法
String strArray[] = ages.split(regex);
// 遍历
for (int i = 0; i < strArray.length; i++) {
System.out.println(strArray[i]);
}
}
}
/*
* 正则表达式的分隔
* 多种符号作为分隔符
* */
/*
* 正则表达式的分隔
* 多种符号作为分隔符
* */
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 定义一个字符串
String ages1 = "aa,bb,cc";// ,作为分隔符
String ages2 = "aa.bb.cc";// .作为分隔符
String ages3 = "aa bb cc";// 多个空格作为分隔符
String ages4 = "F:\\users\\deng\\workspace\\Jacky\\src\\com\\jacky";// 文件夹路径\作为分隔符
// 定义规则
String regex1 = ",";
String regex2 = "\\.";
String regex3 = " +";
String regex4 = "\\\\";
// 调用方法
String strArray1[] = ages1.split(regex1);
String strArray2[] = ages2.split(regex2);
String strArray3[] = ages3.split(regex3);
String strArray4[] = ages4.split(regex4);
// 遍历
for (int i = 0; i < strArray1.length; i++) {
System.out.println(strArray1[i]);
}
System.out.println("----------------");
for (int i = 0; i < strArray2.length; i++) {
System.out.println(strArray2[i]);
}
System.out.println("----------------");
for (int i = 0; i < strArray3.length; i++) {
System.out.println(strArray3[i]);
}
System.out.println("----------------");
for (int i = 0; i < strArray4.length; i++) {
System.out.println(strArray4[i]);
}
}
}
/*
* 正则表达式的分隔
* 有如下一个字符串"91 27 46 38 50"
* 请写出代码实现输出结果是"27 38 46 50 91"
*
* 分析:
* A定义一个字符串
* B把字符串进行分割,得到一个字符串数组
* C把字符串数组转换成int数组
* D对int数组排序
* E把排序后的int数组组装成一个字符串
* F输出字符串
* */
import java.util.Arrays;
/*
* 正则表达式的分隔
* 有如下一个字符串"91 27 46 38 50"
* 请写出代码实现输出结果是"27 38 46 50 91"
*
* 分析:
* A定义一个字符串
* B把字符串进行分割,得到一个字符串数组
* C把字符串数组转换成int数组
* D对int数组排序
* E把排序后的int数组组装成一个字符串
* F输出字符串
* */
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// A定义一个字符串
String ages = "91 27 46 38 50";
String regex = " ";
// B把字符串进行分割,得到一个字符串数组
String strArray[] = ages.split(regex);
int arr[] = new int[strArray.length];
// C把字符串数组转换成int数组
for (int i = 0; i < arr.length; i++) {
arr[i] = Integer.parseInt(strArray[i]);
}
// D对int数组排序
Arrays.sort(arr);
// E把排序后的int数组组装成一个字符串
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++) {
sb.append(arr[i]).append(" ");
}
String result = sb.toString().trim();
// F输出字符串
System.out.println(result);
}
}
/*
* 把数字替换成*
* */
/*
* 把数字替换成*
* */
public class IntegerDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
// A定义一个字符串
String s = "hello1234worldj622112345678ava";
String regex = "\\d+";
String ss = "*";
// B把字符串进行分割,得到一个字符串数组
String result = s.replaceAll(regex, ss);
System.out.println(result);
}
}