判断一个字符是否有数字组成:
public class Hello{ public static void main(String[] args) throws Exception { String str = "13265"; System.out.println(str.matches("\\d+")); } }
1.字符(单个字符)
x:表示由字母x组成;
\\: 匹配“ \ ”转义字符; 两个\\表示一个\
\t:匹配“ \t ”转义字符;
\n:匹配换行转义字符;
2. 字符范围
[abc]:表示可能是字母a、b、c的任意一个
[^abc]:表示不是字母a、b、c的任意一个
[a-zA-Z]:表示任意一个字母(大写或小写)
[0-9]:表示任意一个数字组成
3. 简化表达式:
. : 点表示任意一位字符
\d:表示任意一个数字,等价于[0-9];但是要写\\d,两个\表示一个\
\D:表示任意一个非数字,等于[^0-9]
\w:表示任意一位字符,由字母、数字、_组成,等价于[a-zA-Z0-9_]
\W:表示任意一位非字母,等价于[^a-zA-Z0-9_]
\s:表示任意一位空格,可能是:\n、\t ;
\S:表示任意一位非空格
\.:表示小数点
@:表示符号@
\-:表示-
4. 边界匹配
^ :表示正则匹配开始
$:表示正则匹配结束
5. 量词描述,如果没有量词,那么每一个出现的正则都只能匹配一个字符
表达式?:表示此正则表达式可以出现0次或一次;
表达式+:表示此正则表达式可出现0此或多次;
表达式*:表示此正则表达式可出现0次或1次或多次;
表达式{n}:表示此正则表达式正好出现n次;
表达式{n,}:表示此正则表达式出现n次或n次以上;
表达式{n,m}:此正则表达式出现n到m此;
6. 逻辑运算
X正则Y正则:表示X正则之后紧跟着验证Y正则
X正则|Y正则:表示X正则与Y正则选一个
():一组正则;
范例:进行替换,要非字母的字符替换为逗号
public class Hello{ public static void main(String[] args) throws Exception { String str = "asfd#6@r65wefsdfg¥"; String regex = "[^a-zA-Z]"; System.out.println(str.replaceAll(regex, ",")); } }
范例:进行拆分,将非数字拆分出来
import java.util.Arrays; public class Hello{ public static void main(String[] args) throws Exception { String str = "asfd#6@r65wefsdfg¥"; String regex = "[0-9]+";// 或者是://d+ System.out.println(Arrays.toString(str.split(regex))); } }
范例:判断某一个字符串是否是小数,如果是,转换为double类型
public class Hello{ public static void main(String[] args) throws Exception { String str = "10.234"; String regex = "\\d+\\.\\d+"; if(str.matches(regex)) { System.out.println(Double.parseDouble(str)); }else { System.out.println("不是小数"); } } }
范例:匹配日期
import java.text.SimpleDateFormat; public class Hello{ public static void main(String[] args) throws Exception { String str = "2019-10-11"; String regex = "\\d{4}-\\d{2}-\\d{2}"; if(str.matches(regex)) { System.out.println(new SimpleDateFormat("yyyy-mm-dd").parse(str)); }else { System.out.println("匹配出错"); } } }
范例:匹配电话号码,组成可能有:
62340411 \\d{7,8}
010-65430411或01063240411 (\\d{3,4}-?)\\d{7,8}
(010)-65480411 ((\\d{3,4}-?)|(\\(\\d{3,4}\\)-?))\\d{7,8}
范例:验证email地址
简单验证:email由字母数字下划线组成;a@a.a \\w+@\\w+\\.\\w+
完整验证:用户名部分可以由字母、数字、- 、_ 组成,要求以字母开头,长度6到 30位,在域名后缀只能是.com .cn .net .net.cn .gov .edn .org .me .e
public class Hello{ public static void main(String[] args) throws Exception { String str = "james-y.d_d@info.d.com"; String regex = "[a-zA-Z][a-zA-Z0-9_\\-\\.]{5,29}@[a-zA-Z0-9_\\-\\.]+\\.(com|net|cn|net\\.cn|com\\.cn|gov|edu|org|me)"; System.out.println(str.matches(regex)); } }