關於密碼的正規表示式

2021-09-25 12:51:18 字數 1289 閱讀 8894

例一:

要求:1.密碼長度最少8位

2.大寫字母,小寫字母,數字,特殊符號必須四選三

首先給出全部四種的匹配表示式:

[a-za-z0-9\w_]

其中\w匹配任意不是字母,數字,下劃線,漢字的字元。

然後使用排除法,排除其中只選一種或只選兩種的情況,剩下的就是選了三種的情況了。

有:大寫+小寫大寫+數字大寫+特殊符號小寫+數字小寫+特殊符號數字+特殊符號。共這6種組合。

最後使用環視-正向否定匹配(?!...)組合起來,就得到最終需要的表示式:

^(?![a-za-z]+$)(?![a-z0-9]+$)(?![a-z\w_]+$)(?![a-z0-9]+$)(?![a-z\w_]+$)(?![0-9\w_]+$)[a-za-z0-9\w_]$

例二:要求:由數字和字母組成,並且要同時含有數字和字母,且長度要在8-16位之間。

分開來注釋一下:

^ 匹配一行的開頭位置

(?![0-9]+$) **該位置後面不全是數字

(?![a-za-z]+$) **該位置後面不全是字母

[0-9a-za-z] 由8-16位數字或這字母組成

$ 匹配行結尾位置

注:(?!***x) 是正規表示式的負向零寬斷言一種形式,標識預該位置後不是***x字元。

附:要求:可以包含數字、字母、下劃線,並且要同時含有數字和字母,且長度要在8-16位之間。

^(?![0-9]+$)(?![a-za-z]+$)[0-9a-za-z_]$

qt來判斷正規表示式的類(qregexp):

例:ui->lineedit_2->settext(strregistercode);

// qregexp regxpsw("^(?![0-9]+$)(?![a-za-z]+$)[0-9a-za-z_]$");

qregexp regxpsw("^(?![a-za-z]+$)(?![a-z0-9]+$)(?![a-z\w_]+$)(?![a-z0-9]+$)(?![a-z\w_]+$)(?![0-9\w_]+$)[a-za-z0-9\w_]$");
qstring pwd = ui->lineedit->text();
if(regxpsw.exactmatch(pwd))else

密碼正規表示式

1 密碼由6 32位字母 數字或下劃線構成 2 至少需要一位小寫字母 3 至少需要一位大寫字母 4 至少需要一位數字。string password password system.out.println password null password.length 6 password.length...

關於正規表示式

前言 regular expressions 正規表示式,以下用re稱呼 對小弟來說一直都是神密的地帶,看到一些網路上的大大,簡單用re就決解了某些文字的問題,小弟便興起了學一學re的想法,但小弟天生就比較懶一些,總希望看有沒有些快速學習的方式,於是小弟又請出google大神,借由祂的神力,小弟在網...

關於正規表示式

使用atl中的正規表示式總是會多多少少的出問題,比如 不能識別,一些其他字元不能識別等等,所以使用了greta解決了那個問題 int caddmaker regexmatch cstring strs,cstring regex,cstringarray result match results r...