ホームページ  >  記事  >  ウェブフロントエンド  >  正規表現におけるピリオドの使用のカテゴリは何ですか?

正規表現におけるピリオドの使用のカテゴリは何ですか?

php中世界最好的语言
php中世界最好的语言オリジナル
2018-06-09 14:38:011359ブラウズ

今回は、正規表現におけるピリオドの使用のカテゴリと、正規表現でピリオドを使用する際の注意点について説明します。以下は実際のケースです。見てみましょう。

正規表現では、 . は任意の 1 文字を表すために使用できることはわかっていますが、アンダースコアと jquery のソース コードでは、これらの有名なライブラリのコードでは . が文字を表すために使用されていないことがわかります。 . の場合は、代わりに [ww] または [sS] を使用してください。一見、表現の意味は同じように思えますが、もっとシンプルな方法でもっとぐるぐる回ってみてはいかがでしょうか。今日はこの問題について簡単にお話したいと思います。

まず、 の意味を正しく理解する必要があります。実際、これが任意の 1 文字を表すと言うのは誤解を招く可能性があるため、この「任意の 1 文字」には改行を制御する文字、つまり n r u2028 または u2029 の文字は含まれないことを強調しなければなりません。 W と s にはこれらの文字を含めることができます。 2 つの書き方の違いは、複数の改行制御文字に一致するかどうかという点で非常に明確です。

それでは、いつこれらの改行制御文字を考慮する必要があるのでしょうか?処理対象の文字列に改行が含まれる可能性がある場合。 HTML 文字列の処理、テンプレートの処理、nodejs によるテキストの読み取りなど、そのようなシナリオは多すぎます。

複数行のテキストのシナリオに関しては、正規表現の m モード (複数行モード) を簡単に考えることができます。では、複数行モードは今日議論する問題に何らかの影響を与えるのでしょうか?よくわからない。なぜ確信がないのでしょうか?単一行モードの . の意味は、複数行モードの [wW] または [sS] と同等であると主張する人もいます。制御文字は除きます。しかし、私の実験と MDN によると、これは間違っています。確かに多くの言語の正規表現には上記のような特徴がありますが、JavaScript では見たことがありません。ブラウザによって違いがあるかどうかはわかりません。では、複数行モードは JavaScript にどのような影響を与えるのでしょうか? ^ 記号と $ 記号の意味が変わるだけだと思います。単一行モードでは、これらはそれぞれ文字列全体の先頭と末尾を表し、複数行モードでは、各行の先頭と末尾を表します。複数行モードでも単一行モードでも、 . には改行制御文字が含まれておらず、 [^nru2028u2029] と同等だと思います。

もう少し拡張すると、最新のブラウザでは [^] を直接使用して任意の文字と一致させることができます。

サンプルプログラムを書きたくない場合は、/.*/g、/^.*$/g、/.*/gm、/^.*$ を使用して自分で試してみてください。 /gm は "abcnedf" " と一致します。理由は自明です。

この記事の事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨書籍:

プロジェクトで JS イベント委任を使用する方法

正規表現を使用してパスワードの強度を確認する (コードを使用した 2 つの方法)

以上が正規表現におけるピリオドの使用のカテゴリは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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