正则表达式(一)——验证电话号码

正则表达式:

注意:

1.比如你要验证电话号码是否正确,要求是:以1开头,第2位是3,5,8,总共11位

    正则表达式应该书写成  ^[1]+[3,8]+\d{9}$

package com.ld.num;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Telephone {
	public static void main(String[] args){  
		 //需要验证的手机号
		 String tel="18631721765";
		 //正则表达式
         String reg ="^[1]+[3,8]+\d{9}$" ;  
         //编译正则表达式
     	Pattern pattern = Pattern.compile(reg);
    	
    	Matcher matcher = pattern.matcher(tel);
    	// 字符串是否与正则表达式相匹配
    	boolean rs = matcher.matches();
    	System.out.println(rs);                                
 }
		
}

运行之后提示如下错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
	Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )

	at com.ld.num.Telephone.main(Telephone.java:12)

Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )

at com.ld.num.Telephone.main(Telephone.java:12)

经过百度发现问题出在正则表达式上面个

   应该将 正则表达式中的 ^[1]+[3,8]+\d{9}$ 改为  \\d  

改完之后如下:

package com.ld.num;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Telephone {
	public static void main(String[] args){  
		 //需要验证的手机号
		 String tel="18631721765";
		 //正则表达式
         String reg ="^[1]+[3,8]+\\d{9}$" ;  
         //编译正则表达式
     	Pattern pattern = Pattern.compile(reg);
    	
    	Matcher matcher = pattern.matcher(tel);
    	// 字符串是否与正则表达式相匹配
    	boolean rs = matcher.matches();
    	System.out.println(rs);                                
 }
		
}

运行结果为true:

但是电话号码一般为186...   132.....  159.....

所以进行改进为:

         ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$

代码为:

package com.ld.num;
public class Telephone {
	public static void main(String[] args){
		
		checkTel("18631721765");
		
	    }

	private static void checkTel(String tel) {
		
		//编译正则表达式
		 String reg ="^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$" ;  
   
         System.out.println(tel.matches(reg)?"合法":"非法"); 
	}

 

结果为:

合法

 

 

 

 

 

 

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值