一般开发直播视频app源码时,会预留一些号码给以后升级的会员使用,比如靓号,直播视频app源码采用正则表达式实现较好,通过规则引擎的后台页面做成实时可配置的也是不错的选择。

一. 一般会有如下的正则需求

参考文档:菜鸟教程(正则表达式)

代码如下:

public class CreditCodeRegexValidateStategyServiceImpl implements CreditCodeValidateStategyService {  private static List<String> levitPatterns;  static synchronized private void init() {  if (levitPatterns == null) {  levitPatterns = new ArrayList<String>();  } else {  return;  }  // 手机号、生日号、跟公司业务相关的号码  levitPatterns.add("^(0|13|15|18|168|400|800)[0-9]*$");  levitPatterns.add("^\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])$");  levitPatterns.add("^\\d*(1688|2688|2088|2008|5188|10010|10001|666|888|668|686|688|866|868|886|999)\\d*$");  // 重复号码,镜子号码  levitPatterns.add("^(<a>\\d)(\\d)(\\d)\\1\\2\\3$");
</a>        levitPatterns.add("^(\\d)(\\d)(\\d)\\3\\2\\1$");  // AABB  levitPatterns.add("^\\d*(\\d)\\1(\\d)\\2\\d*$");  // AAABBB  levitPatterns.add("^\\d*(\\d)\\1\\1(\\d)\\2\\2\\d*$");  // ABABAB  levitPatterns.add("^(\\d)(\\d)\\1\\2\\1\\2\\1\\2$");  // ABCABC  levitPatterns.add("^(\\d)(\\d)(\\d)\\1\\2\\3$");  // ABBABB  levitPatterns.add("^(\\d)(\\d)\\2\\1\\2\\2$");  // AABAAB  levitPatterns.add("^(\\d)\\1(\\d)\\1\\1\\2$");  // 4-8 位置重复  levitPatterns.add("^\\d*(\\d)\\1{2,}\\d*$");  // 4位以上 位递增或者递减(7890也是递增)  levitPatterns.add("(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){2,}|(?:0(?=9)|9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,})\\d");  // 不能以 518 、918 结尾  levitPatterns.add("^[0-9]*(518|918)$");  }  @Override  public boolean isAllow(String input) {  Assert.notNull(input);  return !RegexUtil.contains(input, levitPatterns);  }  static {  init();  }  

对于以上正则,前面的大多人都很熟悉了,这里主要讲位置查找和前后向查找,即如下两种号码的判断

// ABBABB  levitPatterns.add("^(\\d)(\\d)\\2\\1\\2\\2$");  
// 4位以上 位递增或者递减(7890也是递增)  levitPatterns.add("(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)|9(?=0)){2,}|(?:0(?=9)|9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){2,})\\d");  

位置查找: \\2\\1\\2\\2 这部分代表的 第一个A 位置是1 第二个B位置是2,重复B则用\\2标识

后向查找   ("(?:(?:0(?=1)| 对于连续号码,?=表示往后看,要判断0后面是1吗,1后面是2吗,如此反复可以得到连续号码

二. 使用 org.apache.oro.text.regex.Pattern   代替 java自身带的partern,

为什么直播视频app源码抛弃java现有的API不用,而使用perl5规范的正则库呢?他是最全面的正则表达式API,全面兼容perl5,同时也是优化的最好的API之一,在未来的JDK版本中可能会看到的。

上面程序调用的正则代码如下:

public class RegexUtil {  private static PatternCompiler compiler = new Perl5Compiler();  private static PatternMatcher  matcher  = new Perl5Matcher();  private static Pattern         pattern  = null;  /** * 根据正则过滤条件过滤 *  * @param input * @param levitPatterns * @return * @throws MalformedPatternException */  public static boolean contains(String input, String patternString) {  try {  pattern = compiler.compile(patternString);  if (matcher.contains(input, pattern)) {  return true;  }  } catch (MalformedPatternException e) {  return false;  }  return false;  }  /** * 根据批量正则过滤条件过滤 *  * @param input * @param patternStrings * @return * @throws MalformedPatternException */  public static boolean contains(String input, List<String> patternStrings) {  for (Iterator<String> lt = patternStrings.listIterator(); lt.hasNext();) {  if (contains(input, (String) lt.next())) {  return true;  }  continue;  }  return false;  }
}  

直播视频app源码的靓号可以怎样实现?相关推荐

  1. java修改动态视频,直播视频app源码,动态修改cron

    直播视频app源码,动态修改cron相关的代码 package com.chashiyu.task.dynamic; import org.springframework.beans.factory. ...

  2. 实现一个直播视频app源码的邀请码功能

    最近做一个直播视频app源码的邀请码功能,一直没找到感觉很完美的方法,然后自己造了一个轮子,当然效果还不是很完善. 首先我认为直播视频app源码的邀请码需要有以下特性: 1.唯一性,不能出现两个场景下 ...

  3. 实现直播视频app源码的底部导航栏

    底部导航栏的应用非常的广泛.今天就介绍直播视频app源码的其中一种实现方式. 一.Fragment + TextView 实现 前面一篇博客在介绍Fragment 的时候就使用了Fragment + ...

  4. 直播视频app源码,Android 点击生成二维码

    直播视频app源码,Android 点击生成二维码实现的相关代码 activity.xml代码如下: <?xml version="1.0" encoding="u ...

  5. 直播视频app源码,自定义可点击可滑动的通用RatingBar

    直播视频app源码,自定义可点击可滑动的通用RatingBar实现的相关代码 绘制ratingbar 绘制未选中的背景 /*** 未选中Bitmap*/ private val starBgBitma ...

  6. 直播视频app源码,保存图片到系统相册

    直播视频app源码,保存图片到系统相册相关的代码 public static void saveImageToGallery(Context context, Bitmap bmp) {// 首先保存 ...

  7. 直播视频app源码,高度不能充满全屏

    直播视频app源码,修改高度不能充满全屏相关的代码 <ScrollViewandroid:layout_width="match_parent"android:layout_ ...

  8. 教你实现,搭建直播视频app源码的账号体系

    账号体系价值 我们先来说一下直播视频app源码账号体系的价值,账号基础价值是用户识别,并将用户权益关联在账号下.账号在一定程度上就等同于会员,通过服务与用户建立深度链接.在这个得用户者得天下的时代,各 ...

  9. 直播视频app源码的分享功能,是这样实现的

    直播视频app源码拥有大量的用户和直播内容,为了方便用户分享平台内容,直播视频app源码实现了分享到第三方的功能,下面就是直播视频app源码实现分享功能的代码. <!doctype html&g ...

最新文章

  1. VIM — vim-go
  2. 【AAAI 2018】腾讯 AI Lab 11篇论文精选:图像描述、NMT 模型、图卷积神经网络、DNN优化等
  3. 安装codeblocks17.12
  4. 微软跨平台移动开发工具套件HockeyApp宣布免费
  5. leetcode454. 四数相加 II(思路+详解)
  6. linux文件IO——文件IO介绍
  7. 蔚来ES8正式交付售价46.8万元起 与Model系相比扛打吗?
  8. python最重要的库
  9. 计算机做镜像步骤,如何将当前的操作系统做成镜像?
  10. Axure经典案例高保真下载(智慧水务、智慧泵房、水厂监控、营收管理、DMA漏损、维护管理、档案管理、仓库管理、水质监控、数据中心、调度指挥中心)
  11. 关于PCM音频数据的相关转换算法
  12. 【自然语言处理】【知识图谱】知识图谱表示学习(一):TransE、TransH、TransR、CTransR、TransD
  13. 如何带领好一个团队,管理的五条实用建议告诉你
  14. LA 4490 Help Bubu (状压DP)
  15. 计算机中数据的格式化,分享一个电脑格式化数据恢复方法-数据恢复百科
  16. mysql自定义函数的分号_Mysql自定义函数
  17. ubuntu怎么设置系统语言英文_Ubuntu系统设置中文语言的方法教程,Ubuntu系统怎么设置中文语言?...
  18. 最多只需三步,彻底解决VB6中不能加载MSCOMCTL.OCX的提示
  19. 第十二章: 项目采购管理
  20. Spring Cloud Alibaba学习指南

热门文章

  1. ios获取国家名称,非常好用
  2. Pr 入门系列之四:编辑(基础篇)
  3. 黑马程序员7K---交通灯管理系统
  4. CISAW风险管理学习笔记(1)-认证体系
  5. 怎样用迅捷画图绘制高端大气的思维导图
  6. 2021.9.9 自适应巡航的车辆动力学系统建模与仿真 ———— 朱茂琳,裴晓飞 ( 武汉理工大学 汽车工程学院)
  7. 最新麦子学院Web前端项目实战 Web前端开发从入门到精通33G完整版
  8. 云计算入门:FusionAccess桌面云解决方案
  9. vscode配置C语言编译调试的方法
  10. python 移动平均线_Python 计算EMA(指数移动平均线)