2017-08-04 18 views
0

Regex Strong Passwordを試しています。regexパスワードに空白を入力しないでください。Laravel 5.4

私の正規表現は以下の通りです。以下の機能に完全に対応します。

Minは1桁
分1低CHAR
最小1アッパーCHAR
最小1特殊文字
分8 文字
最大15文字

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w]).{8,15}$ 

誰かが空白に入る避けるためにお勧めできます?

答えて

1

これはいかがですか?

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w])(?!.*?\s).{8,15}$

私はすべてのあなたの肯定先読みに加えて、空白のための否定先読みを追加しました。

基本的には、「選択したものに続いて一致するものを作成する」という意味の「先読み」が基本的にあります。冒頭に

(?=.*?[A-Z]) // followed by any number of characters and then a capital letter 
(?=.*?[a-z]) // followed by any number of characters and then a lowercase letter 
(?=.*?[0-9]) // followed by any number of characters and then a number 
(?=.*?[^\w]) // followed by any number of characters and then not a word character (0-9a-zA-Z_) 

^で始まることを意味:それは、4つの異なる先読みを持っています。したがって、基本的に正規表現の開始には上記の4つの条件すべてが続くべきだと言います。私はちょうどスペースが続くことができないと言う条件をもう1つ追加しました。 「否定先読み」と呼ばれる:

(?!.*?\s) 
+0

(?=。*?[a-z])について説明するリンクはありますか? +1のために。ありがとう – Pankaj

+0

はい、私が見つけた最良の参考資料はMDNです。 これはjavascriptですが、jsとphpの正規表現は私の経験ではほぼ同じです。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp。また詳細な内訳 https://regex101.com/r/nKgk6R/1 – user3413723

関連する問題