1. 程式人生 > >java正則表示式實戰之密碼策略

java正則表示式實戰之密碼策略

最近在用java開發一個註冊模組,裡面的密碼策略涉及到了正則表示式,於是我就按照QQ帳號註冊的密碼策略用正則表示式去實現字元的過濾,QQ帳號註冊的密碼策略如下圖:


密碼策略涉及到了三個要求,我們就用正則表示式一個一個地來實現,最終用程式碼進行邏輯與運算就可以了。

長度為6-16個字元:.{6,16}

不能包含空格:\\S*

不能是9位以下純數字:(.*\\D.*){1,8}|.{9,}

程式碼如下:

public classRegexp {

   public boolean matchs(String str) {

      if (str.matches(".{6,16}"

)&& str.matches("\\S*")

            &&str.matches("(.*\\D.*){1,8}|.{9,}"))

         return true;

      else

         return false;

   }

}

下面用Junit寫些測試用例來測試一下:

import staticorg.junit.Assert.*;

import org.junit.runner.RunWith;

import org.junit.Test;

import org.junit.runners.Parameterized;

import org.junit.runners.Parameterized.Parameters;

import java.util.Arrays;

import java.util.Collection;

@RunWith(Parameterized.class)

public classRegexpTest {

   private static Regexp regexp=new Regexp();

   private String param;

   private boolean result;

   public RegexpTest(Stringparam,boolean

result){

      this.param=param;

      this.result=result;

   }

   @Parameters

   public staticCollection<Object[]> data(){

      return Arrays.asList(new Object[][]{

            {"1234a",false},

            {"1234567890123456a",false},

            {"12 345a",false},

            {"12345678",false},

            {"123456789",true},

            {"12345a",true},

      });

   }

   @Test

   public void test() {

      assertEquals(regexp.matchs(param),result);

   }

}

測試結果:

 

從測試結果可以看到,6條測試用例全部執行成功!這證明所寫的正則表示式滿足了我們的需求。

相關推薦

java表示式實戰密碼策略

最近在用java開發一個註冊模組,裡面的密碼策略涉及到了正則表示式,於是我就按照QQ帳號註冊的密碼策略用正則表示式去實現字元的過濾,QQ帳號註冊的密碼策略如下圖: 密碼策略涉及到了三個要求,我們就用正則表示式一個一個地來實現,最終用程式碼進行邏輯與運算就可以了。 長度

Java表示式分組和替換

正則表示式的子表示式(分組)不是很好懂,但卻是很強大的文字處理工具。 1 正則表示式熱身 匹配電話號碼 // 電話號碼匹配 // 手機號段只有 13xxx 15xxx 18xxxx 17xxx System.out.println("18304

Java表示式擷取字串

正則表示式很強大,熟悉正則表示式可以少些很多程式碼。常見的有,驗證使用者名稱/密碼是否合法,擷取字串等。這篇文章主要圍繞擷取字串做個簡單的介紹; 假設有個需求:在一長段亂七八糟的字串中擷取需要的資訊。 這裡有一個亂七八糟的字串:fjsdh(1234567

java表示式捕獲分組與Back引用

一.捕獲分組 java正則表示式中以()括起來的內容表示一個分組,像((A)(B(C)))這個表示式中,共存在四個分組: 1.ABC 2.A 3.BC 4.C 很容易發現,分組是按照左邊的括號出現的順序來標號的 這就是捕獲分組 二.Back引用 我們以下面這個正則表示式為例

java校驗,密碼必須由字母和數字組成

mat AR bottom exception click popu 功能 log statistic 一個匹配數字和字母密碼的正則表達式 2011 年 12 月 14 日 | Filed under: 正則表達式 and tagged with: 密碼 , 正則

java表示式學習筆記

本人在開發中使用正則表達的場景並不多,偶爾用一下,學習一波,時間久了就又忘記了,放到部落格中,說不定什麼時候就用到了。   一.正則表示式的語法 這個語法表來自:http://www.runoob.com/java/java-regular-expressions.html

JAVA表示式區分IPv4和IPv6地址

PS*程式碼直接見第二部分: 一、進入正題前先說說JAVA正則表示式相關概念: 1、常用字元類: [abc] == a||b||c   [a-zA-Z] == 所有大小寫字母中的任意一個      [0-9A-Za-z] == 任意

Java表示式過濾、替換,將一段文字中的英語單詞分別提取出,並統計詞頻,按詞頻排序。

最近在學習自然語言處理,在建立基礎標籤庫時,遇到一個需要提取語料中的英文單詞的工作,做好了現在來和大家分享下。 實現效果:讀取檔案內容,把其中的英文單詞提取出,並統計詞頻。提取時,原本不是連在一起的單詞可以分開獨立提取,例如:我的PPT和WORD,可以提取出PPT,WORD兩個單詞。 基本思

java表示式去除html中所有的標籤和特殊HTML字元

關於java正則表示式去除html中所有的標籤和特殊HTML字元,結合我所做的專案總結的經驗: 總共分為三種:第一種適用於適用短的文章,將文章用正則表示式的方式拼接到程式碼中,有些繁瑣,其實不太實用。第二種就是直接將文件引入,進行更改,但是有一個小缺點,就是文件中的格式可能是utf-8格式的

Java表示式實現港、澳、臺身份證驗證

最近由於業務的要求,需要進行港、澳、臺人員身份證驗證,現在直接上程式碼,經供參考學習,也為自己積累一些工具類: package com.qiu.validate; public class regexValidateCard { public String validateIdCard10(String id

JAVA表示式初探

今天有一個需求 ,提上來類似 123#223#2 這樣的字串,要把裡面的數字匹配出來,就看了一下java的正則 以前一直用python處理正則,相比之下java的正則功能是弱了一點 public static void main(String[] args) { Pat

20180716-Java表示式

import java.util.regex.Matcher;import java.util.regex.Pattern; public class RegexMatches{ public static void main(String[] args){ //按指定模式在字串查詢 String line

java表示式的使用:6位數字

public static void main(String[] args) { Pattern pattern = Pattern.compile("\\d{6}"); boolean matches = pattern.matcher("a21109").matches(); S

Java——表示式

正則表示式定義了字串的模式。 正則表示式可以用來搜尋、編輯或處理文字。 正則表示式並不僅限於某一種語言,但是在每種語言中有細微的差別。 java.util.regex 包主要包括以下三個類: Pattern 類: pattern 物件是一個正則表示式的編譯表示。Pattern

表示式 匹配 使用者名稱/密碼/Email/身份證

通過正則表示式匹配 使用者名稱/密碼/Email/身份證 使用者名稱(4到16位,字母數字下劃線,減號): /^[-_a-zA-Z0-9]{4,16}$/ 解釋:在字元組中表示:匹配若干字元之一,這裡就是匹配‘-’ , ‘_’ 和字母,數字其中之一,最後的{4,16}

java表示式校驗

Pattern pattern = Pattern.compile("\\d+\\.\\d+$|-\\d+\\.\\d+$");//判斷是否為小數 Pattern pattern1 = Pattern.compile("^\\d+$|-\\d+$"); if (pattern.match

Java表示式匹配日期及基本使用

廢話不多說,直接上程式碼: package top.yangxianyang.test; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Test; public

Java表示式學習與記錄

轉載自:http://www.runoob.com/java/java-regular-expressions.html 正則表示式定義了字串的模式,用於搜尋、編輯或處理文字。 1、正則表示式中字元意義: \            將下一字元標

Java表示式應用小結

 案例: Pattern p = Pattern.compile("a*b"); // 生成Pattern例項(設定匹配模式【規則】)- 靜態方法 Matcher m = p.matcher("aaaaab");    // 生成Match例項(

java 表示式 複習

正則表示式在日常開發中會經常的接觸到,學會了正則可以更有效的對字元進行驗證、拆分、替換、判斷字串是否合法等操作。。。 常用語法: 字元的取值範圍 1.[abc] : 表示可能是a,可能是b,也可能是c。 2.[^abc]: 表示不是a,b,c中的任意一個 3.[a-zA-Z]: 表示