正则表达式像太极拳一样可谓是“易学难精”,名字听起来也比较唬人,呵呵。希望朋友们多多交流,以下代码是我写的小例子,非常简单,供入门的朋友们学习,欢迎大家指教。
package com.cn;
import java.util.Date;
import java.util.regex.*;
public class RegexTest {
public static void main(String args[]){
int i=1;
//1.匹配用一个空格分隔的任意一对单词
Pattern p=Pattern.compile("[a-zA-Z]* [a-zA-Z]*");
Matcher m=p.matcher("abc defdsafa");
System.out.println(i+++""+m.matches());
//2.匹配合法的java标识符
p=Pattern.compile("_|[a-zA-Z]{0,1}([a-zA-Z0-9_])*");
m=p.matcher("__iwrj");
System.out.println(i+++""+m.matches());
/*
*3. 假设街道地址使用这样的格式 1180 Brod Driver.
* 要求能够匹配多个单词的街道名字,如1234 De Hi Good
*
*/
p=Pattern.compile("[\\d]{4}( [A-Z]{1}[a-z]*)*");
m=p.matcher("1180 Brod Driver Driver");
System.out.println(i+""+m.matches());
m=p.matcher("1234 hello");
/*
* 注意find与matches()的区别
* 调用find方法,只执行尽量匹配
* 而调用matches方法,则执行严格的匹配 1234 hello显然是不匹配的(严格匹配模式下)
* 所以 在这个例子中 调用find()方法返回的是true
* 而调用matches()方法返回的是false
*/
System.out.println(i+""+m.find());
System.out.println(i+++""+m.matches());
/*
*4. 匹配简单的以www.开头,以.com结尾的Web域名
* 注意:\\.表示.而\\表示\
*/
p=Pattern.compile("^www\\.[a-zA-Z0-9]*\\.com$");
m=p.matcher("www.iteye.com");
System.out.println(i+++""+m.matches());
/*
* 5.匹配所有合法的电子邮件的地址
* 如123fn@163.com
*
*/
p=Pattern.compile("\\w+@\\w+\\.com$");
m=p.matcher("af123dfas@123.com");
System.out.println(i+++""+m.matches());
/*
* 6.用正则表达式表示1-12月
*
*/
p=Pattern.compile("(0?[0-9])|1[012]");
m=p.matcher("8");
System.out.println(i+++""+m.matches());
/*
* 7.用正则表达式表示15位的信用卡号,卡号格式为4-6-5
*
*/
p=Pattern.compile("[\\d]{4}-[\\d]{6}-[\\d]{5}$");
m=p.matcher("1234-123235-09848");
System.out.println(i+++""+m.matches());
}
}
4264

被折叠的 条评论
为什么被折叠?



