例一:
要求: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...