[英]Regular Expressions and preg_match()
我是正常表達的瘋狂綠色。 這是我要完成的工作:我需要一個8個字符的密碼,該密碼允許使用大寫和小寫字母,數字和!@#$%^&* -_字符。 以下是我看似不起作用的內容:
preg_match('([A-za-z0-9-_!@#$%^&*]{8,})', $password)
我錯過了一些非常明顯的東西嗎
更新:是的,我確實缺少一些明顯的東西-右括號[。 但是,當我使用單引號或方括號之類的字符時,它仍然返回true。 (這是我要避免的。)
基本上,您會錯過開頭[
這里的字符組括號:
↓
preg_match('([A-za-z0-9-_!@#$%^&*()]{8,})', $password)
你還應該使用分隔符 。 paren的行為將是這樣,但是最好使用不同的對,以免與捕獲組產生歧義:
preg_match('/^([A-za-z0-9-_!@#$%^&*()]{8,})$/', $password)
這也添加了start ^
和end $
assertions以匹配整個字符串。
這可能更容易打破個別規則。 例如,檢查密碼是否至少8個字符,另一個檢查是否為大寫,另一個是否為小寫,等等。
另外,看起來您在正則表達式方面有一些特殊字符,沒有任何轉義。 例如,除了某些特殊情況之外,*字符在正則表達式中具有特殊含義。 它需要轉義\\*
或放在括號[*]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.