日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/1/1 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 直播视频app源码的靓号可以怎样实现? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般開發直播視頻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源码的靓号可以怎样实现?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。