0

については少し知ってpreg_matchいますが、かなり複雑に見えるものもあれば、完全には理解できない記号を含むものもあります。例えば:

最初のものについては、これは電子メール アドレスと URL に関係があるとしか思えませんが、どのようなもので、どのような[^/]意味が?あるのでしょうか?

preg_match('@^(?:http://)?([^/]+)@i', $variable);

.....

2 番目の- のようなものは何^を意味{5}しますか?$

preg_match("/^[A-Z]{5}[0-9]{4}[A-Z]{1}$/", $variable);

それは私が完全に確信していないこれらの小さなことであり、簡単な説明をいただければ幸いです.

4

4 に答える 4

4

ここに直接の答えがあります。正規表現を理解していないと意味がないので、短くしました。その理解はhttp://www.regular-expressions.info/tools.htmlで最もよく得られます。そこにリストされている正規表現ヘルパー ツールも試してみることをお勧めします。これらのツールを使用すると、実験を行うことができます。パターンを編集しながらライブ キャプチャ/マッチングを確認できます。非常に役立ちます。

何かを単純な括弧 ( ) で囲むと、グループになります。ここに (?=) があります。これはアサーション、具体的には肯定的な先読みアサーションです。実行するのは、干し草の山で現在のカーソル位置から前方に実際に何が入っているかを確認することだけです。まだ私と一緒に?例: foo(?=bar) は、後に bar が続く場合にのみ foo と一致します。bar は一致せず、foo のみが返されます。

これを念頭に置いて、正規表現を分析しましょう。

 /^.*(?=.{4,})(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/

Reads as:
    ^.* From Start, capture 0-many of any character
(?=.{4,}) if there are at least 4 of anything following this
(?=.*[0-9]) if there is: 0-many of any, ending with an integer following
(?=.*[a-z]) if there is: 0-many of any, ending with a lowercase letter following
(?=.*[A-Z]) if there is: 0-many of any, ending with an uppercase letter following
    .*$ 0-many of anything preceding the End
于 2012-08-30T14:37:40.930 に答える
1

私はリンクを投稿するだけのファンではありませんが、正規表現のチュートリアルは多すぎると思います。したがって、この正規表現チート シートを確認してください。正規表現の機能について少し理解している場合は、おそらく理解できるでしょう。

また、いくつかの説明とより役立つリンクについては、これをチェックしてください。http://coding.smashingmagazine.com/2009/06/01/essential-guide-to-regular-expressions-tools-tutorials-and-resources/

于 2012-08-30T14:36:06.277 に答える
1

最初のもの: [^/]= スラッシュ以外のすべて

2 つ目: ^$variable の先頭から {5}[AZ] がちょうど 5 回出現するのを $見て、$variable の最後に到達するまで探します

の組み合わせは^ and $、その間のすべてが $variable に適用されなければならないことを意味します

于 2012-08-30T14:40:21.470 に答える
1

最初の1つ:

@実際には一致するコンテンツとは何の関係もありません。通常、/正規表現の区切り文字として使用します。欠点は、使用するたびにエスケープする必要があることです。ここで@は、区切り文字として使用されます。

[^/]キャラクターグループです。文字[/]のみに一致し、これを反転します。.を除くすべての文字に一致します。/^[^/]/

二つ目:

^$文字列の先頭、文字列の末尾に一致します。これを使用して、一致する文字列全体に正規表現を適用する必要があることを強制できます。

{5}量化子です。{5,5}これはwhich isと同等であるminimum 5, maximum 5ため、正確に 5 文字に一致します。

于 2012-08-30T14:39:24.280 に答える