密码正则表达式

前言

这里有你想要的正则表达式。网上这方面的内容比较分散,本文将尽量写出验证各种密码格式的
话不多说,直接上答案。

导航

示例

1种

只能由1种组成

只能由字母组成,1-9位

^[a-zA-Z]{1,9}$

只能由数字组成,1-9位

^\d{1,9}$

只能由特殊字符组成,1-9位

^[^\da-zA-Z\s]{1,9}$

至少包含1种

至少包含字母,1-9位

^(?=.*[a-zA-Z]).{1,9}$

至少包含数字,1-9位

^(?=.*\d).{1,9}$

至少包含特殊字符,1-9位

^(?=.*[^\da-zA-Z\s]).{1,9}$

2种

只能由2种组成

只能由字母、数字组成,1-9位

^(?=.*\d)(?=.*[A-z])[\da-zA-Z]{1,9}$

只能由字母、特殊字符组成,1-9位

^(?=.*[a-zA-Z])(?=.*[^\da-zA-Z\s])([a-zA-Z]|[^\da-zA-Z\s]){1,9}$

只能由数字、特殊字符组成,1-9位

^(?=.*\d)(?=.*[^\da-zA-Z\s])(\d|[^\da-zA-Z\s]){1,9}$

至少包含2种

至少包含字母、数字,1-9位

^(?=.*[a-zA-Z])(?=.*\d).{1,9}$

至少包含字母、特殊字符,1-9位

^(?=.*[a-zA-Z])(?=.*[^\da-zA-Z\s]).{1,9}$

至少包含数字、特殊字符,1-9位

^(?=.*\d)(?=.*[^\da-zA-Z\s]).{1,9}$

任意2种组成

由字母、数字、特殊字符,任意2种组成,1-9位

^(?![a-zA-Z]+$)(?!\d+$)(?![^\da-zA-Z\s]+$).{1,9}$

3种

至少包含3种

至少包含字母、数字、特殊字符,1-9位

^(?=.*\d)(?=.*[a-zA-Z])(?=.*[^\da-zA-Z\s]).{1,9}$

至少包含字母、数字、特殊字符,1-9位,并且不能连续出现3个大小连续或相同的数字(如:456、654、888)

^(?=.*\d)(?!.*(\d)\1{2})(?!.*(012|123|234|345|456|567|678|789|987|876|765|654|543|432|321|210))(?=.*[a-zA-Z])(?=.*[^\da-zA-Z\s]).{1,9}$

详解

吐槽

这块内容一般放在前言里的,但对于正则表达式的内容,写在上面有些多余,因为正则表达式这东西用的时候很少,一部分人可能对怎么写不感兴趣,或者要用的时候比较急,只想复制粘贴后能正常运行,我朋友就属于前两者(医生:你说的这个朋友,是不是你自己呀.jpg)。
看到这儿的应该是没那么急的,那么下面我们就来聊聊——写出满足密码验证条件的正则表达式,需要了解哪些关键语法?

正文

字符 描述
^ 匹配输入字符串的开始位置。
$ 匹配输入字符串的结束位置。
* 匹配前面的子表达式零次或多次。例如,zo能匹配“z”以及“zoo”。等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
? 匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“does”或“does”中的“do”。?等价于{0,1}。
{n,m} 最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。
. 匹配除换行符之外的任何单个字符。
[a-z] 匹配任意小写字母。
[A-Z] 匹配任意大写字母。
[a-zA-Z] 匹配任意字母,不区分大小写。
\d 匹配一个数字。等价于[0-9]。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。
(?=pattern) 正向肯定预查。例如,“Windows(?=2000)”能匹配“Windows2000”中的“Windows”,但不能匹配“Windows3.1”中的“Windows”。
(?!pattern) 正向否定预查。例如“Windows(?!2000)”能匹配“Windows3.1”中的“Windows”,但不能匹配“Windows2000”中的“Windows”。
x y 匹配x或y。例如,“z food”能匹配“z”或“food”。“(z f)ood”则匹配“zood”或“food”。
[xyz] 字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。

上面这些语法应该是大家最常见的、也是最基础的,但对写密码格式验证的正则表达式来说,不是最关键的。
关键是下面3套组合拳:

  • (?=.*x)
    必须有x。
    例:必须有数字——(?=.*\d),以此类推。

  • (?!.*x)
    不能有x。
    例:不能有数字——(?!.*\d),以此类推。

  • (?!x+$)
    不能全是某一种字符。
    例:不能全是数字——(?!\d+$),以此类推。

有了上面的公式,再去看前面的示例应该就比较好理解了。
这里有些人可能就有点疑惑了——上面的表中不是写的(?=pattern)表示在特定字符前,匹配前面的字符吗?如:
Windows(?=2000)能匹配“Windows2000”中的“Windows”,怎么跟后面提到的用法不一样。
这是因为Windows(?=2000)中的“Windows”不仅仅只表示要获取的字符,同时还是一个筛选条件——当“2000”前面是“Windows”时,即:Windows(?=Windows2000),根据这个思路将正则表达式改为(?=Windows2000)Windows同样也是能匹配“Windows2000”中的“Windows”的。所以,当我们不在意“2000”前面有没有“Windows”,甚至不在意前面有没有字符时,(?=.*2000)就代表必须有“2000”,才匹配字符串了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,492评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,048评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,927评论 0 358
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,293评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,309评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,024评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,638评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,546评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,073评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,188评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,321评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,998评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,678评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,186评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,303评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,663评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,330评论 2 358

推荐阅读更多精彩内容