2013-04-22 79 views
1

以下是強密碼驗證之一,它至少包含六個字符幷包含數字,符號或標點符號。?=在^之後是什麼意思?

(?x)^(?=.* (\d | \p{P} | \p{S})).{6,} 

什麼的(?=.*(?x)^後的含義是什麼?

我明白?= expr是Lookahead,檢查後面的文本是否匹配expr。但在這種情況下,只有字符串開頭的^在前面。

+2

我認爲我們可能對這裏的「前面」這個詞有不同的理解 - 在那個時候,'^'已經匹配了,所以它在後面*。 – 2013-04-22 06:51:45

回答

4

在詞:

的註釋標誌被設置((?x))。

字符串(^)必須首先,它必須跟(?=)零個或多個字符(.*)的開始,然後或者((||))數字(\d),一個標點符號(\p{P})或一個符號(\p{S})。

字符串的開頭之後,必須有6個或更多的解釋它的任何字符(.{6,}

呢?

+0

'。*表示零個或多個字符,不是一個或多個字符... – Grhm 2013-04-22 08:16:05

+0

@Grhm是的,謝謝。糾正。我知道,我似乎繼續打錯了。 – Dukeling 2013-04-22 09:21:25

+0

是的,它的確如此。謝謝! – gwillhan 2013-04-22 18:44:47