ホームページ  >  記事  >  バックエンド開発  >  正規表現

正規表現

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-11 10:25:02247ブラウズ

Regular Expressions

これを想像してください。Web サイトにサインアップしようとして、電子メールとパスワードを入力すると、「入力したユーザー名またはパスワードは無効です。もう一度お試しください。」というメッセージが表示されます。 」

コンピュータは、入力したユーザー名またはパスワードが無効であることをどのように正確に認識するのでしょうか?その答えは、正規表現 と呼ばれる非常に強力なツールです。

正規表現とは何ですか?

正規表現、または略して regex は、テキスト内のすべての種類の文字と一致するために使用されるパターンです。正規表現の利点は、必要なものを何でも検索できるように設計できることです。

正規表現パターンの仕組み

正規表現パターンは、完全に完全に一致するテキスト内の文字を検索するのと同じくらい簡単です。たとえば、パターン:

パスワード

リテラルテキスト「パスワード」と一致します。この特定のパターンでは大文字と小文字が区別されるため、p が大文字であるためテキスト「パスワード」は一致しません。

複雑な正規表現パターン

ほとんどの Web サイトでは、次の要件を満たすためにパスワードが必要です:

  • 小文字を含める必要があります
  • 大文字を含める必要があります
  • 数字を含める必要があります
  • 単語以外の文字を含める必要があります
  • 少なくとも 8 文字の長さである必要があります

これらの要件を検索するパターンを作成するにはどうすればよいでしょうか?鍵は正規表現のメタ文字にあります。 メタキャラクター は、文字の種類に一致する事前定義された短縮表現です。

要件を満たす

最初の要件を渡すために使用できるメタキャラクターは次のとおりです:

[a-z]

括弧は、範囲の開始位置と終了位置をコンピューターに指示するために使用されます。 a-z は、a-z の範囲の小文字を検索するために使用されます。


[A-Z]

a ~ z と同様に、A ~ Z は大文字の文字を検索します。 2 番目の要件に合格しました。


d

このメタキャラクターは 3 番目の要件を満たしており、コンピューターに任意の数字を検索して一致させるよう指示します。


W

このメタキャラクターは単語以外の文字に一致するため、4 番目の引数を渡すために使用できます。 Word の文字には、大文字かどうかに関係なく、任意の文字、任意の数字、およびアンダースコアが含まれます。


{8,}

中括弧は、その前にあるものを x 回一致させるようにコンピューターに指示する特殊文字です。括弧内にカンマが含まれている場合は、少なくとも x 回前にあったものと一致するように変更されます。 2 番目の数値をカンマの後に置くと、その前のパターンが最大 y 回実行されます。カンマの後に数値を入力しない場合、コンピューターはその数値を無限大であると解釈します。

すべてをまとめる

いくつかの追加のメタキャラクターの助けを借りて:

^ テキストの始まりを示すために使用されます
$ テキストの終わりを示すために使用されます
() 式をグループ化するために使用されます
(?=) テキストの先読みに使用します
。任意の文字と一致します
* 0 回から無制限の回数まで前のトークンと一致します

これで、パスワードの正規表現パターンをまとめることができます。最終的な結果は次のようになります。

^(?=.*[a-z])(?=.*[A-Z])(?=.*d)(?=.*W).{8,}$

結論

この時点で、正規表現がいかに強力であるかを理解したでしょう。これは氷山の一角にすぎません。これらは、入力の検証、テキストの一致、テキストの検索と置換などに使用できます。

この記事に興味を持っていただけた場合は、以下のリンクをいくつかチェックしてみることをお勧めします。

正規表現について詳しくは、次の記事をご覧ください:
正規表現
Python の正規表現 - Google Education
独自の正規表現を書いて実験するには、regex101

にアクセスしてください。

壁紙ソース

以上が正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。