------- android培训、java培训、期待与您交流! ----------
正则表达式:
是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。
我们都在Windows下查找过某些文件:
例如: 查找所有的word文档:*.doc
正则表达式也是用来进行文本匹配的工具,只不过比起通配符,它能更精确地描述你的需求
String str = “hid”;
验证:
字符串中是否以h开头,以d结尾,而且中间只有一个字符,而且是元音字母a、e、i、o、u?
str.matches(“h[aeiou]d”);
字符串中是否以h开头,以d结尾,而且中间只有一个小写英文字母?
str.matches(“h[a-z]d”);
字符串是否以大写英文字母开头,后跟id?
str.matches(“[A-Z]id”);
字符串首字母是否非数字,后跟id?
str.matches(“[^0-9]id”);
正则表达式的字符类:
1 [aeiou] <span style="white-space:pre"> </span>匹配方括号内的任何字符;
2 [^aeiou] 匹配除aeiou之外的任何字符;
3 [a-z] <span style="white-space:pre"> </span>匹配a – z 的任何小写字符
4 [a-zA-Z0-9] 匹配a – z ,A – Z ,0 – 9 此三个范围内的任何字符;
正则表达式中的逻辑运算符:
1 && 与(并且)
2 | 或(或者)
1 . 任何字符
2 \d 任何数字,是[0-9]的简写形式;
3 \D 任何非数字,是[^0-9]的简写形式;
4 \s 任何空白字符。空格、制表符(\t)、换行符(\n)…
5 \S 任何非空白字符。是[^\s]的简写形式;
6 \w 任何大写、小写字母,或数字或下划线。是[a-zA-Z_0-9]的简写形式;
7 \W 任何非单词字符。是[^\w]的简写形式;
在Java中将反斜线看做转义序列的开头。
因此必须在正则表达式中将反斜线指定为:\\:
判断是否是三位数字:
“\\d\\d\\d”;等同于:“[0-9][0-9][0-9]”
判断字符串是否以h开头,中间是任何字符,并以d结尾:“h.d”
判断字符串是否是”had.”:“had\\.”
判断手机号码(1开头,第二位是:3或5或8,后跟9位数字):
“1[358]\\d\\d\\d\\d\\d\\d\\d\\d\\d”
限定符位于模式中子序列的后侧,确定了子序列的重复方式。
1 + 1次或多次
2 ? 0次或1次
3 * 0次或多次
4 {n} 恰好n次
5 {n,} 至少n次
6 {n,m} 至少n次,但不超过m次(包含m次)
判断1位或多位数字:“\\d+”;
判断手机号码:“1[358]\\d{9}”;
判断小数(小数点最多1次):“\\d+\\.?\\d+”
判断数字(可出现或不出现小数部分):“\\d+(\\.\\d+)?”
正则的功能
1.切割功能
使用String类中的split方法。
举例:
A.切割字符串"aa,bb,cc"; String[] arr= str.split(",");
B.切割字符串"aa.bb.cc"; String[] arr = arr = str.split("\\.");
C.切割字符串“-1 99 4 23”; String[] arr = str.split(" ");
"-1 99 4 23"; String[] arr = str.split(" +");
D.复杂的叠词切割: "sdqqfgkkkhjppppkl"; String[] arr= str.split("(.)\\1+");
2.替换功能
使用String类中的replaceAll方法。
举例:
用”#”替换叠:"sdaaafghccccjkqqqqql"; String s = str.replaceAll("(.)\\1+","#");
把多个叠词变成一个。用上面的字符串; String s = str.replaceAll("(.)\\1+","$1"); $符号 可以获取到该方法中正则实际参数中的某一个存在的组,通过$加组编号即可
实际应用:有些论坛不允许发电话,qq号,银行账号等. 把数字用“*”替换wert13245asfklwyoeworewsfd6744232433fafs String s = str.replaceAll("\\d+","*"); String s = str.replaceAll(“\\d{5,}","*");