我有以下要求:在正則表達式中使特殊字符可選
密碼必須是6-18個字符並且至少包含一個字母和一個數字。特殊字符如@,%,&,#是允許的。
我創造了這個:
,但它接受其它特殊字符,例如_以及和它需要的這些特殊字符@%#&一個必須是字符串。我想讓這個可選。意思是如果用戶輸入這些特殊字符之一,那麼字符串應該是有效的,但如果用戶沒有輸入這些字符,那麼它不應該是無效的。如果用戶輸入任何其他特殊字符,字符串應該是無效的。
我有以下要求:在正則表達式中使特殊字符可選
密碼必須是6-18個字符並且至少包含一個字母和一個數字。特殊字符如@,%,&,#是允許的。
我創造了這個:
,但它接受其它特殊字符,例如_以及和它需要的這些特殊字符@%#&一個必須是字符串。我想讓這個可選。意思是如果用戶輸入這些特殊字符之一,那麼字符串應該是有效的,但如果用戶沒有輸入這些字符,那麼它不應該是無效的。如果用戶輸入任何其他特殊字符,字符串應該是無效的。
對於長度,只需使用字符串長度函數。
然後簡單地測試一下你的輸入是否符合[0-9],
[A-Za-z] and
^[0-9A-Za-z @%&#] + $`。
我想允許@%&#這些字符(儘管可選) – 2012-01-18 12:15:41
嗯,這將允許他們 - 它只測試至少有一個字母和一個數字,就是這樣。正則表達式不會被錨定! – fge 2012-01-18 12:16:31
fge我想只允許這些特殊字符,所有其他特殊字符/字符應該被禁止。 – 2012-01-18 12:18:25
'。'允許換行符(\ n)旁邊的任何字符,所以如果你忽略你的正則表達式的最後一節就應該做你需要的東西:
^.*(?=.{6,18})(?=.*\d)(?=.*[A-Za-z]).*$
如果你想要一些字符不被允許,如「_」你可以把他們放在一個負面看,例如
^.*(?=.{6,18})(?=.*\d)(?=.*[A-Za-z])(?!.*[_]).*$
字符串中不允許使用'_'和'*'。
這一個工作。最後一件事。我們可以以某種方式禁止除這4個以外的所有特殊字符嗎? – 2012-01-18 12:28:41
試試這個'^ [0-9a-zA-Z @#%&] *(?=。{6,18})(?= [0-9a-zA-Z @#%&] * \ d) (?= [0-9a-zA-Z @#%&] * [A-Za-z])[0-9a-zA-Z @#%&] * $'它有相同的想法@ABCade了。 – apines 2012-01-18 12:37:41
@ user1125955:爲什麼你不允許密碼中的任何字符? – 2012-01-18 12:44:37
而不是使用「。」這使得幾乎所有的東西,使用類似:
[[email protected]#%&]
至於其他的反應說,這是一個的匹配那些不需要的字符的.*
。第一個.*
根本不應該在那裏,第二個應該被替換爲一個字符類。
或者甚至更好,在第一個預見結束時添加$
;現在它驗證長度和組成。末尾的.*
和位於視向內的兩個都可以,因爲構圖已經過驗證。
^(?=[[email protected]%&#]{6,18}$)(?=.*\d)(?=.*[A-Za-z]).*$
or, more readably:
^ # start of string
(?=[[email protected]%&#]{6,18})$ # length and composition
(?=.*\d) # required digit
(?=.*[A-Za-z]) # required letter
.* # go ahead and consume it
$ # end of string
你爲什麼標籤這個'nsregularexpression'?這是關於ASP.NET或Objective-C的問題嗎? – 2012-01-18 12:53:18