什么是正则表达式?
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
例如:
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 号代表前面的字符必须至少出现一次(1次或多次)。
runoo*b,可以匹配 runob、runoob、runoooooob 等,* 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)。
colou?r 可以匹配 color 或者 colour,? 问号代表前面的字符最多只可以出现一次(0次、或1次)。
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
?
为什么要使用正则表达式?
可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
换句话说,就是判断一个字符串是否满足你的特定要求的手段。
正则表达式怎么用?(两步走)
1.创建正则表达式规则
Pattern pattern = Pattern.compile("[0-9]*");
2.判断指定字符串是否满足规则
boolean pattern.matcher("awoijdoawjjd").matches()
如果满足规则,则返回true,否则返回false
例子:判断一个字符串是否是手机号
Pattern pattern = Pattern.compile("1[0-9]{10}");
if(pattern.matcher("12326808368").matches()){
System.out.println("succeed");
}else{
System.out.println("fail");
}
?
常用配置:
1.判断是否为手机号(数字1开头 共11位数字)
17826808367
Pattern pattern = Pattern.compile("1[0-9]{10}");
2.判断是否为身份证(15-18位)
Pattern pattern = Pattern.compile("^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$|^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}([0-9]|X)$");
3.判断是否为数字(空字符串不算数字)
Pattern pattern = Pattern.compile("[0-9]+");
?
结语:
感谢蒙面大佬!!
http://www.runoob.com/regexp/regexp-syntax.html
https://zhidao.baidu.com/question/1047372839299634939.html
此篇是我个人的经验,如有不对之处,请麻烦大佬务必指出,谢谢啦!