前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java:正则表达式匹配IMEI(15或17位)

java:正则表达式匹配IMEI(15或17位)

作者头像
10km
发布2020-11-24 15:29:03
1.8K0
发布2020-11-24 15:29:03
举报
文章被收录于专栏:10km的专栏10km的专栏10km的专栏

国际移动设备识别码(International Mobile Equipment Identity,IMEI),即通常所说的手机序列号、手机“串号”,用于在移动电话网络中识别每一部独立的手机等移动通信设备,相当于移动电话的身份证。序列号共有15~17位数字,前8位(TAC)是型号核准号码(早期为6位),是区分手机品牌和型号的编码。接着2位(FAC)是最后装配号(仅在早期机型中存在),代表最终装配地代码。后6位(SNR)是串号,代表生产顺序号。 –百度百科

由上面的IMEI的说明可知IMEI是15或17位的数字组成,所以要判断一个字符串是否为IMEI可以用下面的正则表达去匹配 全字符串匹配:

^[\d]{15}(?:[\d]{2})?$

搜索匹配的正则表达(不同就是去掉头尾的^,$):

[\d]{15}(?:[\d]{2})?

下面是JUnit测试代码

package net.facelib.authkernel;

import static org.junit.Assert.*;

import org.junit.Test;

public class ImeiTest {

	private static boolean testImei(String imei){
		if(imei != null){
			System.out.printf("[%s] %s IMEI\n", imei,imei.matches("^[\\d]{15}(?:[\\d]{2})?$") ? "IS" : "IS NOT");
		}
		return false;
	}
	
	@Test
	public void test() {
		// 随机字符串
		testImei("adsf;asldkfj;sadfkj");
		// 10 位无效数字
		testImei("1234567890");
		// 15 位IMEI
		testImei("123456789012345");
		// 16 位无效数字
		testImei("1234567890123456");
		// 17 位IMEI
		testImei("12345678901234567");
		// 18 位无效数字
		testImei("1234567890123458");
	}

}

[adsf;asldkfj;sadfkj] IS NOT IMEI [1234567890] IS NOT IMEI [123456789012345] IS IMEI [1234567890123456] IS NOT IMEI [12345678901234567] IS IMEI [1234567890123458] IS NOT IMEI

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档