1. 程式人生 > >JAVA中校驗密碼的正則表示式

JAVA中校驗密碼的正則表示式

正則表示式是一種描述字串集合的方法,它是以字串集中各字串的共有特徵為依據的。正則表示式可以用於探索、編輯或者操作文字和資料。它超出了java程式設計語言的標準語法,因此有必要去學習特定的語法來構建正則表示式。正則表示式的變化是複雜的,一旦你理解了他們是如何被構造的話,你就能解析或者構建任意的正則表示式了。

在JDK1.3以及之前的JDK版本中並沒有包含正則表示式的類,如果要在JAVA中使用正則表示式則必須使用第三方提供的正則表示式庫。而在JDK1.4開始提供了支援正則表示式API,他們位於java.util.regex包中,由於已經有了標準API,所以本書將會用java.util.regex進行正則表示式的相關操作。

java.util.regex包主要由三個類組成:Pattern、Matcher和PatternSyntaxException。Pattern物件表示一個已經編譯的正則表示式,Pattern類沒有提供公共的構造方法,要構建一個模式,首先必須呼叫公共的靜態complie方法,它將返回一個Pattern物件,這個方法接受正則表示式作為第一個引數。Matcher是一個靠著輸入的字串來解析這個模式和完成匹配操作的物件,與Pattern相似,Matcher也沒有定義公共的構造方法,需要通過呼叫Pattern物件的matcher方法來獲得一個Matcher物件。PatternSyntaxException物件是一個未檢查異常,指示了正則表示式中的一個錯誤語法。

1、常見的正則表示式中元字元的含義:


元字元
說明
       . 匹配任何單個字元。例如正則表示式“b.g”能匹配如下字串:“big”、“bug”、“b g”,但是不匹配“buug”。
      $ 匹配行結束符。例如正則表示式“EJB$能夠匹配字串“I like EJB”的末尾,但是不能匹配字串“J2EE Without EJBs!”。
      ^ 匹配一行的開始。例如正則表示式“^Spring”能夠匹配字串“Spring is a J2EE framework”的開始,但是不能匹配
I use Spring in my project”。
      * 匹配0至多個在它之前的字元。例如正則表示式“
zo*”能匹配z以及zoo”;正則表示式“.*”意味著能夠匹配任意字串。
      / 轉義符,用來將元字元當作普通的字元來進行匹配。例如正則表示式/$被用來匹配美元符號,而不是行尾;
正則表示式
/.用來匹配點字元,而不是任何字元的萬用字元。
      [] 匹配括號中的任何一個字元。例如正則表示式“b[aui]g”匹配bugbigbug,但是不匹配beg。可以在括號中使用連字元“-”來
指定字元的區間來簡化表示,例如正則表示式
[0-9]可以匹配任何數字字元,這樣正則表示式“a[]c”就可以匹配“a0c”、“a1c”、
a2c”等字串;還可以制定多個區間,例如“[A-Za-z]”可以匹配任何大小寫字母。還有一個相配合使用的元字元“^”,用在這
裡並不像前邊的那個“
^”一樣表示匹配行開始,而是表示排除,要想匹配除了指定區間之外的字元,就可以在左邊的括號
和第一個字元之間使用
^字元,例如“[^163A-Z]”將能偶匹配除了163和所有大寫字母之外的任何字元。
      ()  () 之間括起來的表示式定義為”(group),並且將匹配這個表示式的字元儲存到一個臨時區域,這個元字元在字串
提取的時候非常有用。
      | 將兩個匹配條件進行邏輯運算。'z|food' 能匹配 "z"  "food"'(z|f)ood' 則匹配"zood"  "food"
     + 匹配前面的子表示式一次或多次。例如正則表示式9+匹配999999等。
     ? 匹配前面的子表示式零次或一次。例如,"do(es)?" 可以匹配 "do"  "does" 中的"do" 。此元字元還有另外一個用途,
就是表示非貪婪模式匹配,後邊將有介紹
    {n} 匹配確定的 n 次。例如,“e{2}不能匹配“bed”中的“d”,但是能匹配“seed”中的兩個“e”。
    {n,} 至少匹配n次。例如,“e{2,}”不能匹配“bed”中的“e”,但能匹配seeeeeeeed”中的所有“e”。
   {n,m} 最少匹配 n 次且最多匹配 m 次。“e{1,3}”將匹配“seeeeeeeed”中的前三個“e”。
   其他 /t:製表符,等同於/u0009 /n:換行符,等同於/u000A /d:代表一個數字,等同於[0-9] /D:代表非數字,等同於[^0-9] /s:代表換行符、Tab製表符等空白字元 /S:代表非空白字元 /w:字母字元,等同於[a-zA-Z_0-9] /W:非字母字元,等同於[^/w] 例如,在前面社會安全號碼的例子中,所有出現“[0-9]”的地方我們都可以使用“/d”。 [abc] a, b 或 c(簡單類)
[^abc] 除 a, b 或 c 之外的任意字元(取反)
[a-zA-Z] a 到 z,或 A 到 Z,包括(範圍)
[a-d[m-p]] a 到 d,或 m 到 p:[a-dm-p](並集)
[a-z&&[def]] d,e 或 f(交集)
[a-z&&[^bc]] 除 b 和 c 之外的 a 到 z 字元:[ad-z](差集)
[a-z&&[^m-p]] a 到 z,並且不包括 m 到 p:[a-lq-z](差集)

2、正則表示式校驗密碼實戰

密碼校驗規則如下:

1.必須包含數字、字母、特殊字元三種    

2.長度至少8位

3.不能包含3位及以上相同字元的重複([email protected])

4.不能包含3位及以上字元組合的重複(123q123c123)

5.不能包含3位以上的正序及逆序連續字元(123#wete#321)

6.不能包含空格、製表符、換頁符等空白字元

7.支援特殊字元範圍:^$./,;:'[email protected]#%&*|?+(){}[]

按照需求進行正則表示式拆解

str.matches("^.*[a-zA-Z]+.*$") && str.matches("^.*[0-9]+.*$")
&& str.matches("^.*[/^/$/.//,;:'[email protected]#%&/*/|/?/+/(/)/[/]/{/}]+.*$")

規則2

str.matches("^.{8,}$")

規則3

!str.matches("^.*(.)\\1{2,}+.*$")

規則4

!str.matches("^.*(.{3})(.*)\\1+.*$")
javaImpl:
first change str to char[]
then  for  Math.abs(cc[0] - cc[1]) == 1 && (cc[0] - cc[1]) == (cc[1] - cc[2])
如果想去掉特殊字元的連續:
first str.split("[^\\w]+")  as str1[]
then for  str1[]
then for  str1[i]     javaImpl:

規則6

!str.matches("^.*[\\s]+.*$")

相關推薦

JAVA中校密碼表示式

正則表示式是一種描述字串集合的方法,它是以字串集中各字串的共有特徵為依據的。正則表示式可以用於探索、編輯或者操作文字和資料。它超出了java程式設計語言的標準語法,因此有必要去學習特定的語法來構建正則

Java工具類】----表示式工具類

/** * @Title: RegexValidateUtil.java * @Package org.csun.nc.util * @Description: TODO * @author chisj [email protected] * @da

JS實現使用者名稱,密碼表示式的校

 function d(){   var name=document.getElementById("me").value;           //電話號碼驗證   var str=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})

Java 知識點整理-8.表示式+Math類+Random類+System類+BigInteger類+BigDecimal類+Date類+SimpleDateFormat類+Calendar類

目錄 正則表示式 Math類 Random類 System類  BigInteger類 BigDecimal類 Date類(日期類) DateFormat類 SimpleDateFormat類 Calendar類 正則表示式 1、正則

Java程式設計基礎15——表示式&常用工具類

1_正則表示式的概述和簡單使用 A:正則表示式 是指一個用來描述或者匹配一系列符合某個語法規則的字串的單個字串。其實就是一種規則。有自己特殊的應用。 作用:比如註冊郵箱,郵箱有使用者名稱和密碼,一般會對其限制長度,這個限制長度的事情就是正則表示式做的 B

JAVA 常用類:表示式、Math類、Random類、System類、Date類和Calendar類+程式碼

一、知識點體系圖 二、程式碼演示及注意事項 (1)正則表示式的程式碼例項 public class Test4 { public static void main(String[] args) { // 需求:獲取下面這個字串中由三個字元

Java清除標點符號的表示式

                轉載請註明:http://www.pmjava.com/?thread-62961-1.html[java] view plain copy print?package com.test;    publicclass StringTest {         publicst

密碼表示式密碼長度大於6並且同時包含字母數字特殊字元

package com.desigin.listening; import java.util.regex.Matcher; import java.util.regex.Pattern; public class 密碼正則 { public static void main(Stri

java使用replaceAll的表示式替換,非常好用

package com.blog.test; import java.util.regex.Matcher; import java.util.regex.Pattern; public class TEst { public static void main(St

Java經典例項:表示式,找到匹配的文字

import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank */ public class REMatch { public static void main(

Java進階 九 表示式

java正則表示式 序      由於專案中使用到了利用正則表示式進行表單的校驗,回想一下正則表示式的內容,忘得也差不多了,俗話說:“溫故而知新,可以為師矣”。今天就簡單的溫故一下正則表示式,希望可以獲得新的收穫。      眾所周

9.1(java學習筆記)表示式

一、正則表示式   1.1正則表示式     正則表示式是描述一種規則,通過這個規則可以匹配到一類字串。     2.1正則語法     2.1.1普通字元:字母、數字、下劃線、漢字以及沒有特殊意義的符號都是普通字元。       正則表示式為普通字元時,直接匹配該字元。     

身份證號碼 出生年月 以及有效校表示式判斷

/** * 身份證號碼格式校驗 */ function isIdCardNo (str) { // 身份證號碼正則表示式 var rpIdcard = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; var l

javascript之表單校以及表示式

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/java

日期表示式

校驗日期格式為yyyy-MM-dd HH:mm:ss的正則表示式 public static boolean validateTimeFormat(String dateStr){ String eL= "^((([0-9]{3}[1-9]|[0-9]{2}[1-9][

Java經典例項:表示式,替換匹配的文字

import java.util.regex.Matcher; import java.util.regex.Pattern; /** * Created by Frank * 替換匹配的文字 */ public class ReplaceDemo { public static vo

java表示式

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

常用表示式大全——包括校數字、字元、特殊密碼過濾

原文連結http://www.cnblogs.com/zxin/archive/2013/01/26/2877765.html 常用正則的,可以在下面找到最適用的正則,前端常用的,收藏,不用每次都去找; 介紹: 1、'?=.'的意思是斷言;只匹配一個位置比如,你想匹配一個“人”字,但是你只想匹配中國人的

Java開發筆記(三十八)利用表示式字串

前面多次提到了正則串、正則表示式,那麼正則表示式究竟是符合什麼定義的字串呢?正則表示式是程式語言處理字串格式的一種邏輯式子,它利用若干保留字元定義了形形色色的匹配規則,從而通過一個式子來覆蓋滿足了上述規則的所有字串。正則表示式的保留字元主要有:圓括號、方括號、花括號、豎線、橫線、點號、加

JAVA語言表示式實現密碼規則設定

<span style="font-size:18px;">密碼規則:長度不能小於6位,必須包含字母和數字。</span>public void say() { Scann