先読みと後読みをキャプチャグループと組み合わせる実際のアプリケーション シナリオでは、キャプチャ グループまたは非キャプチャ グループは通常、先読み条件と後読み条件に制限されます。たとえば、数値 12345678 をフォーマットすると、結果は 12,345,678 になります。通常の実装は次のとおりです。 formatSum = '12345678'.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',') とします。 捕獲グループと非捕獲グループ先読みと後読みを理解するには、まずキャプチャグループと非キャプチャグループを理解する必要がある。 jsでは、 () はキャプチャグループを意味し、() は $n (n は n 番目のキャプチャグループの内容を示す数値) を使用して各グループ内の一致する値を保存します。 (?:) は非キャプチャ グループを表します。キャプチャ グループとの唯一の違いは、非キャプチャ グループに一致する値が保存されないことです。 formatSum 式を例にとると、(?=(?:\d{3})+(?!\d))、(?:\d{3})、(?!\d) はすべてグループであり、2 番目のグループは非キャプチャ グループです。 前を向いて、後ろを振り返り、そして前を向いて後ろをネガティブに振り返る上記の formatSum 式では、いわゆる先読みと否定先読みである '?=' と '?!' が使用されています。理解しやすくするために、簡単な例から始めましょう。 // 先読み: A(?=B) //Bより前にAがあるか検索 // ルックバック: (?<=B)A //Bの後のAを検索 // 否定先読み: A(?!B) // Bが後に続かないAを探す // 否定的なルックバック: (?<!B)A // B が前にない A を検索 formatSum式を振り返ると、(?:\d{3})+(?!\d)は全体式Aとみなされ、つまり、 formatSum = /\B(?=A)/g //ここでAは式であり、実際の文字Aではありません。理解を容易にするためです。 これは、式 A の前の \B に一致することを意味し、\B は文字以外の境界に一致するため、式の全体的な機能は、式 A の前の境界に一致して置き換えることであることがわかります。 \B に対応するのは \b で、文字の境界に一致します。初心者にとって、境界の概念は理解しにくいものです。境界は目に見えない | と考えることができます。長さが 2 以上である文字列には境界が存在します。たとえば、「ab」は「a|b」とみなされますが、| は表示されず、文字列の長さにはカウントされません。 'ab'.replace(/\B/, ',') // a,b 次に、式の部分 A を見てみましょう: (?:\d{3})+(?!\d) 。 まず、?: は非キャプチャグループを表し、\d{3} は 3 桁を表し、(?:\d{3})+ は 3、6、9、12... 桁を表します。 (?!\d) は否定の先読みであり、数字が続かない (?:\d{3})+ に一致することを意味します。要約すれば: (?:\d{3})+(?!\d) '12345678' 内の数字以外の 3*n (n=1 増分) 桁 (つまり '678'、'345678') に一致します。 結果は次のとおりです。 formatSum = '12345678'.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',') '12345678' 内の数字ではない 3*n (n=1, n++) 桁の前の非文字境界に一致します。 つまり、「678」と「345678」の前の非文字境界は最終的にコンマに置き換えられます。 つまり、「3」と「6」の前にカンマを追加します 今すぐ '12345678'.replace(/\B(?=(?:\d{3})+(?!\d))/g, ',') === '12,345,678' // 真実 要約するjs 正規表現の先読み、後読み、非キャプチャ グループに関するこの記事はこれで終わりです。js 正規表現の先読み、後読み、非キャプチャ グループの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Ubuntu 20.04 に MySql5.7 をインストールして構成するための詳細なチュートリアル
目次1. 数値型1.1 数値型の分類1.1.1 浮動小数点数1.1.2 ビットタイプ1.1.3 時間...
テーブル名とフィールド–1. 学生リスト学生 (s_id、s_name、s_birth、s_sex)...
フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲...
背景: Linux サーバーのファイルのアップロードとダウンロード。 XShell+Xftp インス...
Google Chinaは、ウェブサイトやブログを素早く簡単に多言語化できる翻訳ツールをリリースした...
docker-maven-plugin プラグインを使用する場合、Maven は対応する jar パ...
Scrcpyのインストールsnap install scrcpy adbサービスのインストールsu...
目次1. コアコマンド2. 共通コマンド3. コアコマンドの詳細な説明3.1、ps補助3.2 トップ...
今朝、私は Wampserver を使用してローカルの win7 マシン上に PHP 環境を構築し、...
1. 設定ファイルディレクトリを作成するcd /ホームディレクトリmkdir frp最終的なディレク...
このチュートリアルでは、MySQL 5.7.18のインストールと設定方法を参考までに紹介します。具体...
目次背景メインコンテンツ1. コンポーネントの比較2. 実装のアイデア3. キーメソッドソースコード...
最近、小さなプログラムを書いています。その小さなプログラムの公式ウェブサイトはhttpsを使用する必...
Docker に Tomcat をインストールする場合、大きなファイルをダウンロードするときなど、場...
1. 自動フロー属性、要素コンテンツの長さと幅が要素自体の長さと幅を超える場合、スクロールバーが表示...