正则表达式中的元字符及其意义(正则表达式中的写法)
. 任意一个字符
\\d 0-9的任意一个数字
\\D 任意一个非数字字符
\\s 空白字符,如'\t'、'\n'
\\S 非空白字符
\\w 可用于标识符的字符,但不包括“$”
\\p{Lower} 小写字母a~z
\\p{Upper} 小写字母A~Z
\\p{ASCII} ASCII字符
\\p{Alpha} 字母字符
\\{Digit} 十进制数字 即0~9
\\{Alnum} 数字或者字母字符
\\{Punct} 标点符号
\\p{Graph} 可见字符
\\p{print} 可打印字符
\\p{Blank} 空格或者制表符
\\p{Cntrl} 控制字符:[\x00-\x1F\x7F]
在正则表达式中,“.”代表任何一个字符,因此在正则表达式中如果想使用普通意义的点字符“.”,必须使用转义字符“\”。
限定修饰符
? 0次或1次
* 0次或多次
+ 一次或多次
{n} 正好出现n次
{n,} 至少出现n次
{n,m} 出现n~m次
[\u4e00-\u9fa5] 中文字的范围写法
$代表结尾
正则表达式的练习
/*
* String 支持正则表达式 (.replaceAll(),.replaceFirst(),.split(),.matches())
* 1.判断字符串有没有大写字母
* 2.判断字符串有没有汉字
* 3.判断字符串有没有数字
* 4.判断一个字符串是不是标准的手机号
*
* */
String str = "hello16java16mysql18html";
System.out.println(str);
//删除指定的数字
System.out.println(str.replace("6",""));
//删除所有的数字,通过for循环删除0-9的数字,并每次循环又重新赋值给str
for (int i = 0; i < 10; i++) {
str = str.replace(String.valueOf(i), "");
}
System.out.println(str);
//------------使用正则表达式,删除所有数字
String str1 = "hello162145java16mysql18html";
System.out.println(str1);
System.out.println("-----------------------------");
//使用replaceAll,\\d表示0-9
System.out.println(str1.replaceAll("\\d",""));
System.out.println("------------------------------");
//删除不是数字的值
System.out.println(str1.replaceAll("\\D",""));
System.out.println("-------------------------------");
//删除首次出现的字符串匹配删除 \\d+
System.out.println(str1.replaceFirst("\\d+",""));
System.out.println("====================================");
String[] langs = str1.split("\\d+"); //通过数字分割成为数组
System.out.println(Arrays.toString(langs));
}
public static void main(String[] args) {
String str = "hello";
//判断字符是否有大写
//.*[A-Z].*
//.代表任意字符
if (str.matches("^.*[A-Z].*$")){
System.out.println(String.format("%s:有大写字母",str));
} else {
System.out.println(String.format("%s:没有大写字母",str));
}
//判断是不是有数字
System.out.println("hello".matches("^.*//d.*$"));
//判断有没有汉字
System.out.println("HH你好hh".matches("^.*[\u4e00-\u9fa5].*$"));
//判断是不是手机号
String phone = "18569874761";
System.out.println(phone.matches("^1[1,3,8]\\d{9}$"));
System.out.println("\\d{9}");
//判断是不是纯数字
String name = "jake小手";
String p = "^[\u4e00-\u9fa5]+$";
if (name.matches(p)) {
System.out.println("纯数字");
} else {
System.out.println("不是纯数字");
}
String str1 = "他的手机号是:18569874761,他在郑州。";
System.out.println(str1.matches(".*\\d.*"));
//判断str1是不是标准的手机格式
System.out.println(str1.matches("^1[1,3,8]\\d{9}"));
//判断里面有没有手机号
System.out.println(str1.matches("^.*1[1,3,8]\\d{9}.*"));
//是不是中文是不是一个汉字 ^开头 $代表结尾{1}
System.out.println("中文".matches("^[\u4e00-\u9fa5]$"));
System.out.println("中文".matches("^[\u4e00-\u9fa5]+$"));
System.out.println("中文".matches("[\u4e00-\u9fa5]+"));
// * 代表是{0,} ? {0,1}
System.out.println("中文a".matches("[\u4e000-\u9fa5]"));
System.out.println("中文".matches("[\u4e00-\u9fa5]{2,6}"));//true
//是不是全英文
System.out.println("abc".matches("[a-zA-Z]+"));//true
System.out.println("ab c".matches("[a-zA-Z]+"));//false
System.out.println("ab123c".matches("[a-zA-Z]+"));//false
System.out.println("abDDDc".matches("[a-zA-Z]{1,}"));//true
//是不是全数字 "\\d+" "\\d*"
System.out.println("0000".matches("\\d"));//false
System.out.println("0000".matches("\\d+"));//true
System.out.println("0000".matches("\\d?"));//false
System.out.println("0000".matches("\\d*"));//true
}
Pattern类:pattern对象是一个正则表达式的编译表示,Pattern类没有公共构造方法,要创建一个Pattern对象,你必须首先调用其他公共静态编译方法,他返回一个Pattern对象,该方法接收正则表达式作为他的第一个参数。