您的位置:首页 > 编程语言 > Java开发

正则表达式(regular expression)

2016-03-22 01:45 337 查看
//正则表达式(regular expression)
/*
split
matches
replaceAll
*/
/**
* 是一种验证规则,用来判断字符串是否符合某种特定格式:
*
* 手机号/邮箱......
*/
/*
* 常见的正则的规则:
* [0-9]:用来匹配一个数字   简写方式:\d
* [a-z]:用来匹配一个小写英文字母
* [A-Z]:用来匹配一个大写英文字母
* [\u4e00-\u952f]用来匹配一个汉字
* [135]1或3或5
* [1ab]1或a或b
* [0-9a-zA-Z]匹配数字+大小写英文
* [0-9a-zA-Z_] 单词字符简写方式:\w
*
*
*
* 原始字符串.matches(正则)
* 返回boolean型,表示原始字符串与正则表达式是否匹配
*
* [^0-9]   用来匹配一个非数字   简写方式:\D
* [^a-z]   除了a-z 以外其他字符
* [^a-zA-Z0-9_]非单词字符       简写方式:\W
* 空白字符 空格  \t  简写方式:\s
*
*
* 量词:
* {m,n}    m表示最少出现的次数,n表示说最多出现的次数
* {k}      恰好出现k次
* {m,}     最少出现m次
* {,n}     最多出现n次
* {0,}     出现0到无穷次 简写方式:*
* {1,}     出现1到无穷次 简写方式:+
* {0,1}    可以出现1次或不出现  简写方式:?
*
*
* 正则表达式:
* . :正则的小数点:表示匹配任意一个字符    真正的小数点:\.
*
* 验证邮箱地址:xxxxxxx@xxxxxx.xxx
* \w+@\w+\.\w+     //邮箱地址简单写法,后面改进
*/

public class TestRegular {
public static void main(String[] args) {

/*
* 原始字符串进行拆分:
* 原始字符串.split("正则")
*
* 根据正则表达式,将原始字符串按正则表达式进行拆分
*
* 例:"aaa.bbb.ccc.ddd".split(",");
* ==>返回字符串数组String[]{"aaa","bbb","ccc","ddd"}
*
*
*
*/
System.out.println("a".matches("[0-9]"));//false
System.out.println("1".matches("[0-9]"));//true
//正则表达式中的  \  在java中需要写为    \\
System.out.println("1".matches("\\d"));//注意java转义字符//\true
System.out.println("2".matches("[135]"));//false
System.out.println("吃".matches("[\u4e00-\u952f]"));//汉字不需要\\,\\u即可
System.out.println("严".matches("[\u4e00-\u4e0f]"));
//验证单词字符
System.out.println("@".matches("[\\w]"));//false
System.out.println("_".matches("[\\w]"));//true
//验证取反
System.out.println("2".matches("[^0-9]"));
System.out.println("a".matches("[^0-9]"));
//空白字符
System.out.println(" ".matches("\\s"));
System.out.println("\t".matches("\\s"));

//{m,n}量词
System.out.println("123456".matches("[0-9]{11,11}"));
System.out.println("123456".matches("[0-9]{11}"));
System.out.println("13812345678".matches("[0-9]{11,11}"));

//验证邮箱
System.out.println("aaaa3333@cc".matches("\\w+@\\w+\\.\\w+"));
System.out.println("aaa@sjafd.coda".matches("\\w+@\\w+\\.\\w+"));

//abc   出现1到多次
//()叫做分组,把括号内的内容作为一个整体来看待
String str1 = "abcabcabc";
str1.matches("abc+");
System.out.println(str1.matches("abc+"));//错误的正则,+只影响到c
System.out.println(str1.matches("(abc)+"));//正确

//abc 或 def 出现1到多次,| 代表组内或者关系
System.out.println("defdef".matches("(abc|def)+"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息