正则表达式极大的简化了我们的需求....
举个例子:
不用正则:
public class TestZZ { public static void main(String[] args) { if(isNumber("12345")){// 判断是否由数字构成 System.out.println("由数字构成!"); }else{ System.out.println("不是由数字构成!"); } } public static boolean isNumber(String str){ char[] data = str.toCharArray(); for (int i = 0; i < data.length; i++) { if(data[i]<'0' || data[i] >'9'){ return false; } } return true; } }
使用正则:
public class TestZZ { public static void main(String[] args) { if("123".matches("\\d+")){//利用正则表达式 System.out.println("由数字组成!"); }else{ System.out.println("不是由数字组成!"); } } }
通过一个简单的对比,可以看出正则表达式使用起来,极为简便,大大简化了我们的代码难易程度。
下面让我们看下核心的正则表达式标记
字符,表示某个字符,只能出现1位
x:表示是一个指定的一位字符,例如:编写一个a,表示字符a;
\\:表示一位字符“\”
\n:换行
字符范围,在指定的字符范围之中选1位,只能出现1位
[abc] :表示可以是a,b,c中的任意一位
[^abc]:表示不是a,b,c中的任意一位
[a-zA-Z]:表示任意一个字符(大写或小写
[0-9]:表示任意一个数字
简介表达式,表示1位
.:表示任意一个字符
\d:表示一位数字,等价于[0-9]
\D:表示一位非数字,等价[^0-9]
\s:表示一位空格,等价[\t\n\x0B\f\r]
\S:表示一位非空格,等价[……\t\n\x0B\f\r]
\w:表示一个字母,数字,_,等价[0-9a-zA-Z_]
\W: 表示一个非字母,数字,_等价[^0-9a-zA-Z_]
4.数量表示
? 表示正则出现0或1
+ 表示正则出现1或多次
* 表示正则出现0或1次或多次
{n} 表示正则正好出现n次
{n,}表示正则出现n次以上
{n,m}表示正则出现n-m次