国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

CodeWars 上面的奇葩問(wèn)題(二)

TANKING / 3176人閱讀

工作之余在codewars上看了一個(gè)問(wèn)題,題目如下

  

寫一個(gè)正則,驗(yàn)證密碼,保證以下幾點(diǎn),
0.位數(shù)大于六
1.必須包含小寫字母
2.必須包含大寫字母
3.必須包含數(shù)字

好吧,我搞了半天沒(méi)搞出來(lái),各位看官,你們知道怎么解嗎?

答案我參考了google,使用一條正則表達(dá)式是這樣的

function validate(password) {
  return /^(?=.*d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,}$/.test(password);
}

這里包含了幾個(gè)基礎(chǔ)知識(shí)點(diǎn),我說(shuō)明一下
正則的主體是這個(gè)

/^[a-zA-Z0-9]{6,}$/

^,$代表從頭開始到結(jié)尾,量詞指示從頭到尾六次以上,匹配的內(nèi)容是大小寫加數(shù)字

主體之外,用了三個(gè)前向斷言
我們先來(lái)看一下前向斷言的應(yīng)用

  

"Windows (?=95|98|NT|2000)" 匹配“Windows 2000”中的“Windows”,但不匹配“Windows
3.1”中的“Windows”

主體,匹配的依然是主體windows,前向斷言的作用相當(dāng)于一個(gè)篩選條件
所以,我們這里匹配的還是主體里那六個(gè)以上的字符,只是加了三個(gè)條件
三個(gè)什么條件?

(?=.*d)(?=.*[a-z])(?=.*[A-Z])

.*任意字符出現(xiàn)0或多次后面跟d數(shù)字,意思是只有要數(shù)字,甭管他前面有或沒(méi)有任意字符,有幾個(gè)任意字符,我們都要。
同理后面的小寫,大寫。
而且這三個(gè)斷言相當(dāng)于“并”的關(guān)系。

我們?cè)俳M合來(lái)看是不是更明白一些了?
^(?=.*d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{6,}$

這句的意思是我們要從開始到結(jié)束6個(gè)以上字符,他們的條件有三個(gè),出現(xiàn)過(guò)數(shù)字,小寫,大寫

以上是普通青年解法

那這作弊來(lái)的答案,也是頗有成就感的,心想這種問(wèn)題不會(huì)有其他答案了吧,但答題者的想象力再次超過(guò)了我的想象,以下是其他幾種答案,供擴(kuò)展思路之用

function validate(password) {
  return  /^[A-Za-z0-9]{6,}$/.test(password) &&
          /[A-Z]+/           .test(password) &&
          /[a-z]+/           .test(password) &&
          /[0-9]+/           .test(password) ;
}

進(jìn)行了四個(gè)正則驗(yàn)證,用&&相連,避免了正則內(nèi)部的斷言,這是文藝青年解法

下面還有鉛筆青年解法,就看看

function validate(password) {

  // 1) if the first char is [0-9]:
  //    a) verify what follows contains at least 1 [a-z]
  //    b) verify what follows contains at least 1 [A-Z]
  //    c) verify what follows contains only [0-9a-zA-Z] and at least 5 of them
  // 2) if the first char is [a-z]:
  //    a) verify what follows contains at least 1 [0-9]
  //    b) verify what follows contains at least 1 [A-Z]
  //    c) verify what follows contains only [0-9a-zA-Z] and at least 5 of them
  // 3) if the first char is [A-Z]:
  //    a) verify what follows contains at least 1 [a-z]
  //    b) verify what follows contains at least 1 [0-9]
  //    c) verify what follows contains only [0-9a-zA-Z] and at least 5 of them

  return /^(([0-9](?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z]))([0-9a-zA-z]{5,})|([a-z](?=[^0-9]*[0-9])(?=[^A-Z]*[A-Z]))([0-9a-zA-z]{5,})|([A-Z](?=[^a-z]*[a-z])(?=[^0-9]*[0-9]))([0-9a-zA-z]{5,}))$/.test(password);
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/87574.html

相關(guān)文章

  • CodeWars 面的奇葩問(wèn)題和回答(一)

    摘要:其實(shí)昨天晚上我看到最逗得一段代碼是這樣的,老外的創(chuàng)造力真是震古爍今啊,題目是寫一個(gè)函數(shù)查找素?cái)?shù)。 這兩天有點(diǎn)迷Codewars , 這上面的好處是獎(jiǎng)勵(lì)系統(tǒng),我為了升段位晚上像打游戲升級(jí)一樣的在做js習(xí)題,想想老外哪怕這簡(jiǎn)單網(wǎng)站的任務(wù)系統(tǒng)做的可真夠好啊。 先給大家介紹第一道 六段題(一共8kyu,kyu上面還有dan,數(shù)字越小越難) 題目: 創(chuàng)造一個(gè)函數(shù),返回如下這么個(gè)玩意,參數(shù)...

    gggggggbong 評(píng)論0 收藏0
  • [到codewars打怪獸]利潤(rùn)是怎樣煉成的

    摘要:利潤(rùn)是怎樣煉成的怪獸的屬性怪獸的技能大木博士的圖鑒你是趙老爺家的算帳二狗子,趙家老爺想要學(xué)習(xí)一些理財(cái)知識(shí),就去詢問(wèn)孔乙己。 [7 kyu]Money, Money, Money 利潤(rùn)是怎樣煉成的??2016.03.15 怪獸的屬性: showImg(http://ww2.sinaimg.cn/large/006m2mhTgw1f1xxc38fbqj30qa0s2q6f.jpg);sho...

    zhangyucha0 評(píng)論0 收藏0
  • 入坑codewars

    摘要:,黑色的主題風(fēng)格,很符合。時(shí)間復(fù)雜度雖然成功,但我明顯感覺代碼寫得不是很優(yōu)雅。這個(gè)是沒(méi)錯(cuò)的,但缺乏了宏觀的視角,會(huì)變得片面。但是不重要,關(guān)鍵是這個(gè)思想要學(xué)習(xí),可以應(yīng)用到其他地方。求和,大于就返回偶數(shù)的位置,否則返回奇數(shù)的位置。 前幾天做LeetCode上的大數(shù)乘法,代碼沒(méi)錯(cuò),可就是提交不成功,顯示SyntaxError: Unexpected token var我把所有代碼都注釋掉,只...

    sherlock221 評(píng)論0 收藏0
  • codewars的一道題目學(xué)習(xí)ES6的Map

    摘要:我對(duì)數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)最近在上做了一道題目,嗯,我這個(gè)渣渣沒(méi)有做出來(lái),然后看了別人的解決方案,是時(shí)候?qū)W習(xí)一下的了。。。。。讀取對(duì)應(yīng)的鍵值,如果找不到返回鍵是函數(shù)返回一個(gè)布爾值,表示某個(gè)鍵是否在數(shù)據(jù)結(jié)構(gòu)中。 我對(duì)ES6數(shù)據(jù)結(jié)構(gòu)Map的學(xué)習(xí) 最近在CodeWars上做了一道題目,嗯,我這個(gè)渣渣沒(méi)有做出來(lái),然后看了別人的解決方案,Map??? 是時(shí)候?qū)W習(xí)一下ES6的Map了。。。。。 以下是原題...

    IamDLY 評(píng)論0 收藏0
  • [到codewars打怪獸]進(jìn)制加農(nóng)炮

    摘要:二進(jìn)制加農(nóng)炮問(wèn)題描述驗(yàn)證方式題目理解把兩個(gè)數(shù)的和轉(zhuǎn)換成二進(jìn)制并以字符串的形式輸出。和當(dāng)前位數(shù)數(shù)的大小來(lái)決定。優(yōu)解使用了的添加了檢測(cè)輸入的參數(shù)合理否。通過(guò)執(zhí)行取余除二取反來(lái)實(shí)現(xiàn)知識(shí)點(diǎn)二進(jìn)制如何轉(zhuǎn)十進(jìn)制,十進(jìn)制如何轉(zhuǎn)二進(jìn)制 [7 kyu]Binary Addition 二進(jìn)制加農(nóng)炮??2016.03.11 問(wèn)題描述: showImg(http://ww3.sinaimg.cn/large/...

    caikeal 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<