我需要的正則表達式來驗證串.NET正則表達式具有最小長度6,它是含有至少一個非字母數字字符e.g:"eN%{S$u)"
,"h9YI!>4j"
,"{9YI!;4j"
,"eN%{S$usdf)"
,"dfh9YI!>4j"
,"ghffg{9YI!;4j"
。其中檢查長度和非字母數字字符
這個工作正常^.*(?=.{6,})(?=.*\\d).*$"
但在字符串不包含任何數字的情況下(例如"eN%{S$u)"
)它不起作用。
我需要的正則表達式來驗證串.NET正則表達式具有最小長度6,它是含有至少一個非字母數字字符e.g:"eN%{S$u)"
,"h9YI!>4j"
,"{9YI!;4j"
,"eN%{S$usdf)"
,"dfh9YI!>4j"
,"ghffg{9YI!;4j"
。其中檢查長度和非字母數字字符
這個工作正常^.*(?=.{6,})(?=.*\\d).*$"
但在字符串不包含任何數字的情況下(例如"eN%{S$u)"
)它不起作用。
^(?=.{6})(.*[^0-9a-zA-Z].*)$
我們使用積極的lookahead來確保至少有6個字符。然後我們匹配查找至少一個非字母數字字符([^0-9a-zA-Z]
)的模式。該.*
的匹配任意數量的圍繞這一非字母數字字符的任意字符,但我們已經檢查我們在這裏達成的時間,我們會等額至少6
^.*(?=.{6,})(?=.*\\d).*$"
是你試過的正則表達式。以下是一些建議:
\d
匹配一個數字,(?=.*\\d)
是其中之一的前瞻。這就是爲什麼你遇到你提到的問題,如eN%{S$u)
。.*\\d.*
的.*
組合起來。保持容易。
// long enough and contains something not digit or a-z
x.Length >= 6 && Regex.IsMatch(x, @"[^\da-zA-Z]")
快樂編碼。
編輯,純粹的「正則表達式」:
這第一人稱有很多先行任何6個字母,然後確保前瞻中有一些東西是不是甲型數字(它會「扔掉」到最初的5個字符試圖匹配)。
(?=.{6}).{0,5}[^\da-zA-Z]
有關(固定)什麼:^(?=.{6})(.*[^\w].*)$
檢查了這一點http://www.ultrapico.com/Expresso.htm這是很酷的工具,它可以幫助你很多正則表達式的學習。
marcog的答案是相當不錯的,但我周圍做其他的方式,以便更容易增加更多的條件(如具有至少一個數字或其他),我會使用懶惰量詞因爲他們是特定的模式更便宜:
^(?=.*?[^0-9a-zA-Z]).{6}
所以,如果你要添加提到的附加條件,這將是這樣的:
^(?=.*?[^0-9a-zA-Z])(?=.*?[0-9]).{6}
正如你所看到的,這種模式很容易擴展。請注意,它僅用於檢查匹配項,它的捕獲無用。
我保持配置文件中的正則表達式,我不能這樣做。 – Reg 2011-01-08 07:12:49
此輸入失敗:`lucero-1` – Lucero 2011-01-08 10:49:18