一、Java使用正则表达式
1. replaceAll() --- 去掉所有的特殊字符
String regEx = "[`!@#$%^&*()+=|{}':;',//[//].<>/?!@#¥%……&*()——+|{}【】‘;:”“’。,、?]";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(str);
matcher.replaceAll("").trim();
2. find() -- 匹配任意字符串中包含形如“@数字&”格式的子串
String st="看,墙面上的雕塑是什么?@322&大家一定猜到了,这是一个神经元。";
Pattern pattern = Pattern.compile("^(.*)@-?[1-9]\\d*&(.*)$"); //去掉空格符合换行符
Matcher matcher = pattern.matcher(st);
boolean result = matcher.find();
3. 检查字符串中是否存在指定字符
String text = "there are many hotels " +"by amap.the adrr: http://xxxx pattern.";
String pattern = ".*http://.*";
boolean matches = Pattern.matches(pattern, text);//true则存在
4. Matcher 匹配指定格式的特殊字符串
Pattern pattern = Pattern.compile("[0-9]*");//判断是否都是数字
Matcher isNum = pattern.matcher("1123是数字");
if(isNum.matches()) {
System.out.println("全部是数字");
} else {
System.out.println("有汉字");
}
二、正则表达式相关
1. 常用预留字符
字符 |
说明 |
? |
匹配前面的子表达式零次或一次。例如,“do(es)? ”可以匹配“does ”或“does ”中的“do ” |
* |
匹配前面的子表达式零次或多次。例如,zo*能匹配“z ”以及“zoo ” |
+ |
匹配前面的子表达式一次或多次。例如,“zo+ ”能匹配“zo ”以及“zoo ”,但不能匹配“z ” |
\ |
转义字符 |
\d |
匹配任意的数字 ---> [0-9] |
\D |
匹配任意非数字 ---> [^0-9] |
\s |
匹配任意空白符(空格、缩进、换行、回车) |
\S |
匹配任意非空白字符 |
\w |
匹配任意单词 |
\W |
匹配任意非单词 |
. |
任意英文字母 |
2. [] 的用法
限定符 |
说明 |
[a-z] |
匹配 a -- z 中的任一字符,[abc]匹配 a 或 b 或 c |
[0-9] |
匹配 0 -- 9 中的任一个数字字符 |
[0-9A-Z] |
匹配 0 -- 9 或 A -- Z范围中一个字符 |
[abc] |
匹配所包含的任意一个字符。例如,“[abc] ”可以匹配“plain ”中的“a ” |
[^abc] |
匹配不是 a, b, c 的字符 |
[a-z&&[^m-p]] |
匹配 a -- z 之间的所有字符,但是不包括 m -- p 之间的字符 |
3. 边界匹配
边界符 |
说明 |
^ |
匹配开头 |
$ |
匹配结尾 |
\b |
匹配单词边界 |
\B |
匹配非单词边界 |
\A |
匹配文本开头 |
\G |
匹配前一匹配项结尾 |
\Z |
输入的结尾,仅用于最后的结束符(如果有的话) |
\z |
匹配文本结尾 |
4. 逻辑操作符
与 操作是默认的, abc,意味着 a 与 b 与 c
或 | 操作,abc|yz,意味着 abc 或者 yz
5. 量词表示
字符 |
说明 |
a{n} |
匹配 n 次 a 字符 |
a{n,} |
匹配最少 n 次 a 字符 |
a{n, m} |
匹配最少 n 次,最多 m 次 a 字符 |
6. 常用的正则表达式
说明 |
对应的正则表达式 |
用户名(3到16位) |
/^[a-z0-9_-]{3,16}$/ |
密码(6到18位) |
/^[a-z0-9_-]{6,18}$/ |
十六进制值 |
/^#?([a-f0-9]{6}|[a-f0-9]{3})$/ |
电子邮箱 |
/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/ |
URL |
/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ |
IP 地址 |
/((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)/ /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/ |
HTML 标签 |
/^<([a-z]+)([^<]+)*(?:>(.*)<\/\1>|\s+\/>)$/ |
删除代码\\注释 |
(?<!http:|\S)//.*$ |
Unicode编码中的汉字范围 |
/^[\u2E80-\u9FFF]+$/ |