2011-09-20 10 views
0

我已經寫密碼一個正則表達式,其接受任意字符用5分鐘長度和30.正則表達式是不工作在C#

我嘗試下面的表達式最大長度:

(\S){5,30} 

但它也接受超過30個字符的密碼。我怎樣才能確保它不符合這些密碼?

+8

顯示示例輸入並解釋您希望匹配的內容不匹配。說什麼是「不行」是非常模糊的 - 你需要更加明確。 – Oded

+0

我嘗試了超過30個字符的輸入密碼,但驗證不正確。 – Nayan

+3

您可能想要錨定該RE ... –

回答

6

你的問題是你的正則表達式也匹配你輸入的子串。

\S{5}(或(\S){5})匹配12345的字符串1234567890

所以,你需要錨您正則表達式:

^\S{5,30}$ 

驗證5-30字符,非空白的字符串。 \S附近的括號是無用的和不必要的。

無論如何,你爲什麼會對密碼施加長度限制?爲什麼你不允許空白字符呢?另見this

+0

+1,但我不認爲這就是爲什麼它不適用於OP的問題。 – stema

+2

@stema:爲什麼不呢?他正在使用'Regex.IsMatch()',如其中一條評論所述。我敢打賭,我今天贏得的所有積分都是缺少錨點的問題。 –

+0

好的,我忽略了那條評論 – stema

0

如果您確實需要「任何字符」,請使用句點(.)而不是\S

+1

他想匹配沒有空格的字符串。 「」將抓住那些。 –

+1

而這並不能解決他的問題。 –

+1

也許,但他確實說了「任何字符」,並沒有在描述中指定非空白(儘管暗示了「\ S」)。通常,密碼可以接受空格。 – jcadcell