2012-08-08 70 views
3

任何人都可以告訴我什麼「?=」使用正則表達式嗎? 下面是代碼片段,我試圖破譯的一個例子:「?=」在正則表達式中做什麼?

password.matches("(?=.*\\d.*\\d.*)^[\\w]{8}.*$"); 

感謝。

+0

https://www.google.com/search?q=question+mark+equals+regex ...並點擊[第一擊](http://www.regular-expressions.info/lookaround.html )。 – 2012-08-08 21:47:15

回答

6

這是一個positive lookahead。在這個特殊的表達中,它是說你的密碼必須至少有兩位數(\d)。

另請注意,前瞻不會消耗輸入,它只是一個斷言

例如,在你的正則表達式,先行部分((?=.*\\d.*\\d.*))聲稱,您的password包含至少兩個數字和表達式的其餘部分消耗整個字符串,並嘗試匹配至少8字字符(即, [a-zA-Z_0-9])在字符串的開頭。

3

這是一個前瞻:一個零寬度匹配,用於檢查位置是否跟隨給定表達式。

http://www.regular-expressions.info/lookaround.html

在您的情況,您正在尋找一個字符串:

  • 始於包含兩個數字的字符串(由先行強制執行)
  • 始於8字字符(匹配由正則表達式的其餘部分)

向前看並不是匹配的一部分。它的行爲很像字邊界(\b)或字符串開頭(^)。

相關問題