关于正则表达式的简单使用
正则表达式
简介
什么是正则表达式?
正则表达式由字符和特殊符号组成的一种字符串,通常用于匹配和查询,有三种基本操作
1.连接
2.或
3.闭包
正则表达式可以做什么?
电话号码或者邮箱等进行匹配,可以使用正则表达式来完成,在文章中寻找想要的关键词,也可以使用正则表达式来完成。
实例
编写一个正则表达式来分辨手机号的运营商
手机号码的长度为11位
(旧版)
移动: 134,135,136,137,138,139,150,151,157,158,159,182,187,188
联通: 130,131,132,152,155,156,185,186
电信: 133,1349,153,180,189
移动正则表达式:^1(3[4-9]|5[0-1|7-9]|8[2|7-8]\d)\d{8}$
解释下思路,手机号码假设为一串字符串,1是肯定会有的,如果出现其他的数字开头,说明这个号码就不是手机号了,3,5,8,是三家服务商共有的号码,所以提出来,接着第三位号码决定手机号码的服务商了,移动的3是以{4,5,6,7,8,9}, 所以可以写成[4-9], 表示4-9的子集,其他以此类推。
下面是Java写法,regex包是SE7的,所以版本低于JDK1.7就不能使用regex包。
import java.util.Scanner;
import java.util.regex.*;
public class ReNumber {
public static void main(String[]args){
Scanner scanner = new Scanner(System.in);
String input = scanner.next();
String CMCC = ".*^1(3[4-9]|5[0-1|7-9]|8[2|7-8]\\d)\\d{8}$.*";
boolean isCMCC = Pattern.matches(CMCC, input);
if (isCMCC)
{
System.out.println("中国移动");
}
}
结语
这次的正则表达式没有写好,没有静下来心来,完全写透,先这样凑合着看吧。
#Java#