検索

JavaScript の正規表現

Oct 13, 2016 am 11:19 AM

まず、正規表現とは何ですか?

正規表現はカスタム ルールの式であり、定義されたルールに一致する文字列を照合するために使用されます。どのような意味です?たとえば、これは正規表現です: /d/。d は任意の数値を意味するため、この正規表現の意味は任意の数値と一致することです。あなたはおそらくそれを理解しています!

正規表現の構成を見てみましょう。

1. 直接の文字

JavaScript の正規表現

2. 範囲クラス

JavaScript の正規表現

とはどういう意味ですか?例: /[a-z]3{1,3}5+/ この式は、任意の英文字が 1 回現れ、次に数字の 3 が 1 ~ 3 回現れ、その後数字 5 が少なくとも 1 回現れることを意味します。

Chrome デバッグ ツールの test() メソッドを使用して試してみましょう:

注: test() メソッドは、文字列が特定の正規表現に一致するかどうかを確認し、ターゲット文字列であるパラメーターを受け取るために使用されます。一致する場合は true を返し、そうでない場合は false を返します

JavaScript の正規表現

3. 文字クラス

JavaScript の正規表現

これは何ですか、赤ちゃんには理解できません!例を見てみましょう: /[abc]wd{2}/、この式は、abc のいずれか 1 つに一致し、その後に単語 ([a-zA-Z0-9]) またはアンダースコアが続き、その後 2 つの数字が続くことを意味します。写真を見てください!

JavaScript の正規表現

4. アンカー文字

JavaScript の正規表現

ここで ^ について話しましょう。つまり、... から始めることを意味します。 例を見てみましょう:

JavaScript の正規表現

比較のために、^

JavaScript の正規表現

はありません。ここの式の $ 原理は ^ と同じなので、ここでは詳しく説明しません。ただし、$ は式の最後に記述する必要があります。

5. 修飾子

JavaScript の正規表現

g 修飾子を使用しない場合、正規表現は最初の項目に一致した時点で照合を終了します。g 修飾子がある場合は、一致する項目がすべて検索されます。新しい正規表現メソッド replace() を学習します。

注: replace() メソッドは、文字列内の指定された文字を置き換えることで、2 つのパラメーターを受け取ります。最初のパラメーターは、置換することを示す正規表現です。 2 番目のパラメータは、置換する内容を示す文字列です。以下の例を参照してください。

JavaScript の正規表現

最初の数字だけが置き換えられています。 g 修飾子を使った状況を見てみましょう。

JavaScript の正規表現

これで、g の意味が分かりました。

i について話しましょう。i 修飾子は非常に単純で、大文字と小文字が区別されないことを示します。次の例を参照してください。

JavaScript の正規表現

最後の m は複数行の検索を表します。たとえば、文字 a で始まる文字列を一致させたい場合、m 修飾子がある場合、改行後の a で始まる行も一致します。紙面の都合上、写真は掲載しておりません。

6. グループ化

正規表現で括弧 () を使用してグループ化を表し、それぞれの () がグループ化を表します。グループ内のコンテンツは $1、$2... で表されます。引き続き例を見てください:

たとえば、日付には次の 2 つの表現があります: 月-日-年と年/月/日、月-日を変更する方法-年から年へ /month/day はどうでしょうか?

JavaScript の正規表現

を見てみましょう。この例では、月、日、年をグループ化し、$backreference を使用して日付形式の変換を実現します。

7. メソッド

正規表現の詳細についての説明はほぼ終了したので、正規表現で使用されるメソッドを学び始めましょう。 2 つのカテゴリがあり、1 つは正規表現オブジェクト メソッド、もう 1 つは文字列オブジェクト メソッドです。

1. 正規表現オブジェクトのメソッド

、test() と exec() が 2 つあります。 test() メソッドについて学習しました。次に、exec() メソッドについて説明します。

exec() メソッドは配列を返します。配列の最初の要素は一致したテキスト、2 番目の要素は一致したテキストの最初のサブテキスト、3 番目の要素は一致したテキストの 2 番目のサブテキストです。 ... 等々。これは非常に抽象的なので、以下の例を見て理解してください。

Exec() 呼び出しは、非グローバル呼び出しとグローバル呼び出しの 2 つの状況に分けられます。

非グローバル呼び出しの状況:

以下の例を見てください

JavaScript の正規表現

ここでは、「a12b」が初めて一致し、次の 2 つの要素が最初のグループ「1」と 2 番目のグループであることがわかります。 .「2」。しかし、exec() メソッドが 2 回目に実行されるとき、一致は依然として「a12b」であり、これは予期せぬことです。 2 番目の一致が「c56d」であるのは当然ですが、なぜまだ「a12b」なのでしょうか?理由は lastIndex 属性にあります。 lastIndex 属性は、最後の一致結果の最後の文字の次の文字を表しますが、この属性はグローバルに呼び出された場合 (つまり、g 修飾子が式に追加された場合) にのみ有効になります。非グローバルに呼び出された場合は、常に 0 になります。 。比較のために、世界の通話状況を見てみましょう。

グローバル呼び出しの状況:

JavaScript の正規表現

ご覧のとおり、exec() の最初の実行では「a12b」が返され、2 回目に返される lastIndex は文字列 str 内の番号 3 の位置です。 "c56d" "、lastIndex は 10 で、これは文字列 str 内の数値 7 の位置です。現時点では、lastIndex は機能するため、2 つの実行の結果が期待されます。

2. String オブジェクトのメソッド

String オブジェクトのメソッドには、search()、replace()、match()、split() があります。

1. Search() メソッド

search() メソッドは、文字列内の指定された部分文字列を取得するか、正規表現に一致する部分文字列を取得するために使用されます。一致が見つかった場合は、最初に一致した結果のインデックスが返されます。一致が見つからなかった場合は、-1 が返されます。文字列または正規表現のパラメータを受け取ります。このメソッドは、毎回文字列の先頭から照合を開始します。次の例を見てみましょう:

JavaScript の正規表現

数値 2 を 2 回検索して返されたインデックスは 1 であり、2 番目の数値 2 のインデックス 5 ではありません。 3 番目と 4 番目の検索は正規表現で渡され、両方とも対応するインデックスを返しました。

2. replace() メソッド

この方法は以前に学んだので、ここで続けてください。いくつかの形式があります: replace(str,replaceStr)、replace(RegExp,replaceStr)、replace(RegExp,function)。最初の 2 つは比較的単純です。理解するには例を見てください:

JavaScript の正規表現

初めて文字列を渡すときは、数値 2 を X に置き換えます。正規表現で 2 回目に渡すときは、すべての数値を置き換えます。 Xと一緒に。

replace(RegExp,function) メソッドの 2 番目のパラメーターは関数です。このメソッドは、より複雑な文字の置換に適しています。興味がある方は、ここでは紹介しません。

3. Match() メソッド

match() メソッドはパラメータ、つまり渡された正規表現に一致する文字列を検索するために使用される正規表現を渡します。配列を検索して返す場合、この配列は非グローバル呼び出しとグローバル呼び出しで異なります。これについては、後で個別に説明します。

非グローバル呼び出し:

非グローバルに呼び出された場合、返される配列は次のようになります: 最初の要素は一致したテキスト、2 番目の要素は一致したテキストの最初のサブテキスト、3 番目の要素は一致したテキストの 2 番目のサブテキスト... など。デジャブのような感じですか?はい、これは exec() メソッドとまったく同じです。

JavaScript の正規表現

非グローバル呼び出しの場合でも、各検索は文字列の先頭から始まります。グローバル呼び出しを見てみましょう。

グローバル呼び出し:

グローバルに呼び出された場合 (つまり、正規表現に g 修飾子がある場合)、返される配列は次のようになります: 配列内の各項目は一致するテキストであり、サブテキストは存在しません。一致するテキストの。

JavaScript の正規表現

正規表現に一致する「a12b」と「c56d」が配列に表示されます。実際、match() メソッドと exec() メソッドは同じ機能を持ちますが、一方は文字列によって呼び出され、他方は正規表現によって呼び出される点が異なります。

4. Split() メソッド

Split() メソッドは、文字列を配列に分割するために使用されます。次の例を見てください。

JavaScript の正規表現

split() メソッドによって受け取られるパラメータは、文字列または正規表現です。例からわかるように、渡されたパラメーターはすべて文字列から削除され、配列に分割されます。


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

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

ブラウザを超えて:現実世界のJavaScriptブラウザを超えて:現実世界のJavaScriptApr 12, 2025 am 12:06 AM

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する(バックエンド統合)Apr 11, 2025 am 08:23 AM

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)next.jsを使用してマルチテナントSaaSアプリケーションを構築する方法(フロントエンド統合)Apr 11, 2025 am 08:22 AM

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScript:Web言語の汎用性の調査JavaScript:Web言語の汎用性の調査Apr 11, 2025 am 12:01 AM

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの進化:現在の傾向と将来の見通しJavaScriptの進化:現在の傾向と将来の見通しApr 10, 2025 am 09:33 AM

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

javascriptの分解:それが何をするのか、なぜそれが重要なのかjavascriptの分解:それが何をするのか、なぜそれが重要なのかApr 09, 2025 am 12:07 AM

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

pythonまたはjavascriptの方がいいですか?pythonまたはjavascriptの方がいいですか?Apr 06, 2025 am 12:14 AM

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。