簡體   English   中英

正則表達式和preg_match()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM