質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Q&A

解決済

4回答

1292閲覧

パスワードの形式を確認するプログラムのパターン

nana_shi

総合スコア1

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

0グッド

0クリップ

投稿2020/07/08 05:55

前提・実現したいこと

パスワードの形式を確認するプログラムで、
指定したパスワードが英小文字、英大文字、数字を各1個以上含み、8文字以上であるかを確認するパターンとして下記のように記述されていました。

発生している問題・エラーメッセージ

上から「aからzまでの文字を含む」「AからZまでの文字を含む」「0から9までの文字を含む」「英小文字、英大文字、数字が8文字以上」というパターンですが、上3つの「?=.*」の意味が分かりません。 それぞれの意味は調べたのですが、どうして「〇から〇までの文字を含む」となるのかが理解できませんでした。

該当のソースコード

(?=.*[a-z]) (?=.*[A-Z]) (?=.*[0-9]) [a-zA-Z0-9]{8,}

試したこと

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

部分一致の正規表現です。
参考

投稿2020/07/08 06:08

kyoya0819

総合スコア10429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyoya0819

2020/07/08 06:09

わかりやすくて詳しい回答が先についてた。。orz
nana_shi

2020/07/08 06:33

回答ありがとうございます!
guest

0

ベストアンサー

(?=で始めるパターンは、言明と呼ばれます。^$などは、特定の文字ではなく、ある位置にマッチしますが、言明も文字ではなく位置にマッチするタイプです。

(?=.*[a-z])は、「『これ以降に任意の文字列が続いて、その後にa-zのどれかの文字が出てくる』という位置」にマッチします。わかりやすく言葉を直せば、「これ以降のどこかにa-zのどれかの文字が出てくれば、この言明にマッチする」ということになります。

投稿2020/07/08 06:08

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nana_shi

2020/07/08 06:35

回答ありがとうございます!一番速く、詳しく解説していただけたのでBAにさせていただきました。
guest

0

正規表現は、視覚化ツールを使用すると学習が進むので試してみてください。

たとえば、こちらのサイトでデバッグできるので、文字が消費される様子を見て理解を深めると良いです。

https://regex101.com/

ちょっと使用方法を学ぶ必要がありますが、日本語で解説している記事もどっかにあったはずです。

ほかも色々あるの探してみると良いですよ。

投稿2020/07/08 06:16

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nana_shi

2020/07/08 06:31

ありがとうございます!使ってみたいと思います
guest

0

どうして「〇から〇までの文字を含む」となるのかが理解できませんでした。

(?=.*[a-z])を例とします。

.* は『任意のゼロ文字以上』にマッチする正規表現です。

[a-z]は『aからzの1文字』にマッチする正規表現です。

よって、.*[a-z] は『任意の1文字以上の文字列にaからzが最低1文字含まれる』場合にマッチする正規表現ということになります。

これで回答になりましたか?

投稿2020/07/08 06:10

DreamTheater

総合スコア1095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nana_shi

2020/07/08 06:32

回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問