码迷,mamicode.com
首页 > 编程语言 > 详细

java正则表达式

时间:2017-10-03 15:25:53      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:编写   tde   字母   部分   数字   使用   public   nqa   单个字符   

1、	字符:匹配单个字符
	· a:表示匹配字母a;
	· \\:匹配转义字符“\”;
	· \t:匹配转义字符“\t”;
	· \n:匹配转义字符“\n”;
2、	一组字符:任意匹配里面的一个单个字符;
	· [abc]:表示可能是字母a,可能是字母b或者是字母c;
	· [^abc]:表示不是字母a、字母b、字母c的任意一个;
	· [a-zA-Z]:表示全部字母中的任意一个;
	· [0-9]:表示全部数字的任意一个;
3、	边界匹配:在以后编写JavaScript的时候使用正则中要使用到;
	· ^:表示一组正则的开始;
	· $:表示一组正则的结束;
4、	简写表达式:每一位出现的简写标记也只表示一位;
	· .:表示任意的一位字符;
	· \d:表示任意的一位数字,等价于“[0-9]”;
	· \D:表示任意的一位非数字,等价于“[^0-9]”;
	· \w:表示任意的一位字母、数字、_,等价于“[a-zA-Z0-9_]”;
	· \W:表示任意的一位非字母、数字、_,等价于“[^a-zA-Z0-9_]”;
	· \s:表示任意的一位空格,例如:\n、\t等;
	· \S:表示任意的一位非空格;
5、	数量表示:之前的所有正则都只是表示一位,如果要想表示多位,则就需要数量表示。
	· 正则表达式?:此正则出现0次或1次;
	· 正则表达式*:此正则出现0次、1次或多次;
	· 正则表达式+:此正则出现1次或多次;
	· 正则表达式{n}:此正则出现正好n次;
	· 正则表达式{n,}:此正则出现n次以上;
	· 正则表达式{n,m}:此正则出现n ~ m次。
6、	逻辑表示:与、或、非
	· 正则表达式A正则表达式B:表达式A之后紧跟着表达式B;
	· 正则表达式A|正则表达式B:表示表达式A或者是表达式B,二者任选一个出现;
	· (正则表达式):将多个子表达式合成一个表示,作为一组出现。

3.11.3、String类对正则的支持

在JDK 1.4之后,String类对正则有了直接的方法支持,只需要通过如下的几个方法就可以操作正则。

No. 

方法名称

类型

描述

1 

public boolean matches(String regex) 

普通

与指定正则匹配

2 

public String replaceAll(String regex, String replacement) 

普通

替换满足指定正则的全部内容

3 

public String replaceFirst(String regex, String replacement) 

普通

替换满足指定正则的首个内容

4 

public String[] split(String regex) 

普通

按照指定正则全拆分

5 

public String[] split(String regex, int limit) 

普通

按照指定的正则拆分为指定个数

Pattern类之中存在的方法:

· 字符串全拆分:public String[] split(CharSequence input);

· 字符串部分拆分:public String[] split(CharSequence input, int limit);

Matterh类之中存在的方法:

· 字符串匹配:public boolean matches();

· 字符串全替换:public String replaceAll(String replacement);

· 字符串替换首个:public String replaceFirst(String replacement)。

正是因为String类支持的方法比较全面,所以在开发之中,主要的都是String类操作正则,因为方便。下面编写若干个操作实例来进行正则的验证。

范例:字符串拆分

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7" ;

String regex = "[a-zA-Z]+" ;// 字母出现1次或多次

System.out.println(str.replaceAll(regex, ""));

System.out.println(str.replaceFirst(regex, ""));

}

}

 

范例:字符串拆分

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "a1bb2ccc3dddd4eeeee5fffffff6ggggggg7" ;

String regex = "\\d" ;// 数字出现1次,[0-9]

String result [] = str.split(regex) ;

for (int x = 0; x < result.length; x++) {

System.out.print(result[x] + "、");

}

}

}

 

有了正则,对于字符串日后的种种操作就会变的相当的方便。而正则在使用的过程之中最为重要的部分就是验证部分,因为一些字符串必须满足于指定的格式才可以操作。

范例:现在编写一个正则表达式要求验证电话号码是否正确,例如:现在写上咱们电话号码,有如下几种写法:

· 写法一:51283346  \\d{7,8};

· 写法二:01051283346  (\\d{3,4})?\\d{7,8};

· 写法三:010-51283346  (\\d{3,4})?-?\\d{7,8};

· 写法四:(010)-51283346  ((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8};

· 写法五:(010)51283346  ((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}。

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "51283346";

// 第一步:\\d{7,8},因为电话号码可能是7~8位所组成;

// 第二步:(\\d{3,4})?\\d{7,8},因为区号由3~4位所组成;

// 第三步:(\\d{3,4})?-?\\d{7,8},因为-可能出现也可能不出现

// 第四步:((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}

String regex = "((\\d{3,4}|\\(\\d{3,4}\\))-?)?\\d{7,8}";

if (str.matches(regex)) { // 符合于验证要求

System.out.println("TRUE,电话号码输入合法。");

} else {

System.out.println("FLASE,电话号码输入非法!");

}

}

}

 

范例:现在要求验证一个email地址,email地址的用户名由字母、数字、_、.所组成,其中不能以数字和.开头,而且email地址的域名只能是.com、.cn、.net 

package cn.mldn.demo;

public class TestDemo {

public static void main(String[] args) throws Exception {

String str = "mldnqa@163.net";

String regex = "[a-zA-Z_][a-zA-Z_0-9\\.]*@[a-zA-Z_0-9\\.]+\\.(com|cn|net)";

if (str.matches(regex)) { // 符合于验证要求

System.out.println("TRUE,EMAIL输入合法。");

} else {

System.out.println("FLASE,EMAIL输入非法!");

}

}

}

 以上内容摘抄自李兴华java8笔记

 

java正则表达式

标签:编写   tde   字母   部分   数字   使用   public   nqa   单个字符   

原文地址:http://www.cnblogs.com/lanqie/p/7623729.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!