次の記事では、JS 正規表現での RegExp オブジェクトと括弧の使用について簡単に説明します。内容がとても良かったので、参考としてシェアさせていただきます。
RegExp オブジェクトの作成:
従来の正規表現は、直接量、つまりスラッシュ「/」で囲まれた文字を使用して作成できます。ただし、パラメーターの変更が必要な環境では、 RegExp() コンストラクターの方が適切な選択です。
var reg1 = /'w+'/g;
var reg2 = new RegExp(''\w+'','g' );
2 つの作成方法を比較すると、RegExp の最初のパラメータは作成される通常の文字列であるため、スラッシュ「/」と引用符で囲まれていないことに注意してください。マーク「 ' 」とエスケープ記号「 」は文字列内で 2 回エスケープする必要があります。
さらに、直接変数であっても RegExp() コンストラクターであっても、新しい RegExp オブジェクトが生成され、変数に割り当てられます。
match() と exec() の類似点と相違点:
match と exec は、正規表現を使用して文字列を照合するための一般的な方法です。 2 つによって実装される関数は似ていますが、いくつかの微妙な違いがあります:
1. 使用法
match は文字列パッケージ化オブジェクトのメソッドです。使用法: String.match(RegExp);
exec は正規表現です。 object メソッド、使用法: RegExp.exec(String);
2. 返される結果
RegExp がグローバル フラグ "g" を設定しない場合:
両方の返される結果は同じです。つまり、一致する値がない場合は null が返され、一致する値がある場合は配列 (let 配列) が返されます。 array[0] は一致する文字列で、array[1]、array[2]... は正規表現の括弧で囲まれた部分文字列 $1、$2... に対応します。同時に、配列には 2 つの属性があり、array.index は一致する文字列の最初の位置を表し、array.input は取得される文字列を表します。
RegExp にグローバル フラグ "g" が設定されている場合:
match は値があれば配列を返します。配列内の各項目は、一致したすべての文字列を順番に表すため、括弧で囲まれた部分文字列はそれ以上一致しません。このとき、配列にはインデックス属性と入力属性はありません。
exec は、グローバル フラグ "g" がない場合と同じように動作します。この時点で返されるのは配列 array で、array[0] は現在一致している文字列、array[1]、array[2]... は現在の一致の下の括弧内に一致している文字列です。このとき、元の文字列内で一致した文字列の末尾以降の位置を表す RegExp オブジェクトの lastIndex 属性に注目してください。他に一致する結果が存在しない場合、lastIndex 属性は 0 に設定されます。したがって、lastIndex ループを使用して、一致する文字列をすべて検索できます。
複数のマッチングメソッドをサポートします:
jsコード
var testStr = "now test001 test002"; var re = /test(\d+)/ig; var r = ""; while(r = re.exec(testStr)) { alert(r[0] + " " + r[1]); }
さらに、testStr.match(re)を使用することもできますが、この場合、 g オプションを指定すると、最初に一致したもののみが取得されます。
1. 正規表現の規則
1.1 通常の文字
以下の章で特に定義されていない文字、数字、漢字、アンダースコア、および句読点はすべて「通常の文字」です。式内の通常の文字は、文字列と一致する場合、同じ文字と一致します。 例 1: 式「c」、文字列「abcde」と一致する場合、一致結果は成功、一致した内容は「c」、一致した位置は 2 から始まり 3 で終わります。 (注: 添字が 0 から始まるか 1 から始まるかは、現在のプログラミング言語によって異なる場合があります) 例 2: 式 "bcd" が文字列 "abcde" と一致した場合、一致結果は次のようになります。は: "bcd"; 一致する位置は: 1 から始まり 4 で終わります。1.2 簡易エスケープ文字
一部の書きにくい文字については、先頭に「/」を追加する方法を使用してください。実際、私たちはこれらのキャラクターをよく知っています。expression | は | |||||||||||||||||||||||||||||||
/rと一致できます、/n | はキャリッジリターンとラインフィードを表します | |||||||||||||||||||||||||||||||
/t | タブ | |||||||||||||||||||||||||||||||
// | は「/」そのものを表します |
expression |
は |
/^ |
^記号自体と一致します |
/$ |
$ 記号そのものと一致します |
/. |
は、小数点(.)そのものと一致します |
これらのエスケープ文字の一致方法は、「通常の文字」と同様です。同じ文字にも一致します。
例 1: 式「/$d」、文字列「abc$de」と一致する場合、一致結果は次のとおりです。一致した内容は「$d」です。一致した位置は 3 から始まり、終了します。 5時に。
1.3 「複数の文字」に一致する式
正規表現の一部の表現方法は、「複数の文字」のいずれか 1 つに一致します。たとえば、式「/d」は任意の数値と一致します。どの文字とも一致しますが、一致できるのは 1 つだけであり、複数にすることはできません。これは、ポーカーをプレイするようなものです。キングとキングはどのカードでも置き換えることができますが、置き換えることができるのは 1 枚のカードだけです。
式 |
は |
/d |
0から9までの任意の数値 |
/wと一致します |
任意の文字、数字、またはアンダースコアつまり、A~Z、a~z、0~9、_ |
/s |
(スペース、タブ、フォームフィード、その他の空白文字を含む) のいずれか |
. |
小数点は、改行文字 (/n) を除く任意の文字と一致します。 |
例 1: 式 "/d/d"、一致する場合 "abc123" が使用される場合、一致結果: 成功; 一致した内容: 「12」; 一致した位置: 3 から始まり 5 で終わります。
例 2: 式「a./d」が「aaa100」と一致する場合、一致結果は「成功」、一致した内容は「aa1」、一致した位置は 1 から始まり 4 で終わります。
1.4 「複数の文字」に一致するカスタム式
角括弧 [ ] を使用して、任意の 1 文字に一致する一連の文字を含めます。 [^] を使用して、それらの文字を除く任意の文字と一致する一連の文字を含めます。同様に、それらのいずれかを一致させることはできますが、一致できるのは 1 つだけであり、複数ではありません。
expression |
は |
[ab5@]と一致します |
は「a」、「b」、「5」、または「@」と一致します |
[^ abc] |
は、「a」、「b」、「c」を除く任意の文字と一致します |
[f-k] |
は、「f」~「k」と一致します 任意の文字 |
[^A-F0-3] |
は、「A」~「F」、「0」~「3」を除く任意の文字 |
例 1: 式 "[bcd][bcd]" が "abc123" と一致する場合、一致結果は次のようになります: 一致した内容は次のようになります: "bc"; 一致した位置は次のようになります: 1 から始まり 3 で終わります。
例 2: 式「[^abc]」が「abc123」と一致する場合、一致結果は「成功」、一致した内容は「1」、一致した位置は 3 から始まり 4 で終わります。
1.5 一致の数を変更する特殊記号
前の章で説明した式は、1 種類の文字のみと一致するか、複数の文字のいずれか 1 つと一致するかにかかわらず、一致できるのは 1 回だけです。式と一致の数を変更する特殊記号を使用すると、式を再度記述しなくても、繰り返し一致させることができます。
使用方法は、「修飾式」の後に「修飾回数」を入れます。たとえば、「[bcd][bcd]」は「[bcd]{2}」と書くことができます。
式 |
関数 |
{n} |
式をn回繰り返します。例: "/w{2}" は "/w/w" と同等です。 「a{5}」は「aaaa」と同等です |
{m,n} |
この式は少なくとも m 回、最大で n 回繰り返されます。たとえば、「ba{1,3」です。 }" は、"ba" または "baa" または "baaa" に一致します |
{m,} |
式は少なくとも m 回繰り返されます。例: "/w/d{2,} " は、"a12"、"_456"、"M12344" と一致します... |
? |
は、式と 0 回または 1 回一致し、{0,1} に相当します。例: "a[ cd]?" は、"a","ac","ad" と一致します |
+ |
式は少なくとも 1 回出現し、{1,} と同等です。例: "a+b" は、 match "ab", "aab ","aaab"... |
* |
この式は出現しないか、何度でも出現します。{0,} に相当します。例: "/ ^*b" は "b"、" ^^^b" と一致します... |
例 1: 式 "/d+/.?/d*" が "Itcost $12.5" と一致する場合、一致する結果: 成功; 一致した内容: 「12.5」; 一致した位置: 10 から始まり 14 で終わります。
例 2: 式「go{2,8}gle」が「Ads by goooooogle」と一致する場合、一致結果は次のとおりです。一致したコンテンツは「goooooogle」です。一致した位置は 7 から始まり、終了します。 17時。
1.6 抽象的な意味を表すその他の特殊記号
一部の記号は、式内の抽象的な特殊な意味を表します:
expression |
function |
^ |
の先頭に一致します文字列、どの文字とも一致しません |
$ |
文字列の末尾と一致します、どの文字とも一致しません |
/b |
は 1 つの Word 境界と一致します。単語とスペースの間の位置、どの文字とも一致しません |
これ以上のテキストの説明はまだ比較的抽象的であるため、誰もが理解できるように例を示します。
例 1: 式「^aaa」が「xxx aaa xxx」と一致する場合、一致結果は失敗になります。 「^」は文字列の先頭と一致する必要があるため、「^aaa」は「aaa xxx xxx」のように「aaa」が文字列の先頭にある場合にのみ一致します。
例 2: 式「aaa$」が「xxx aaa xxx」と一致する場合、一致結果は失敗となります。 「$」は文字列の末尾と一致する必要があるため、「aaa$」は「xxx xxx aaa」のように「aaa」が文字列の末尾にある場合にのみ一致します。
例 3: 式「./b.」が「@@@abc」と一致する場合、一致する内容は「@a」です。一致する位置は 2 で始まり、次で終了します。 4.
さらなる説明: 「/b」は「^」や「$」と似ていますが、それ自体はどの文字とも一致しませんが、一致結果の位置の左側と右側にある必要があります。片側が「/w」の範囲、もう一方が「/w」の範囲です。
例 4: 式「/bend/b」が「weekend,endfor,end」と一致する場合、一致する結果は次のとおりです。一致するコンテンツは「end」です。一致する位置は 15 から開始、終了は次のとおりです。 18.
一部のシンボルは、式内の部分式間の関係に影響を与える可能性があります。 左辺と右辺の式「OR」 " それらの間の関係、左側または右側の一致
( ) | (1)。一致の数を変更すると、括弧内の式全体を変更できます (2). マッチング結果を取得する際、括弧内の表現に一致する内容を個別に取得できます |
例5: 表現「Tom|Jack」は文字列「I'm Tom, he is Jack」と一致します。 "、一致結果は成功、一致内容は「Tom」、一致位置は 4 から始まり 7 で終わります。次の一致の場合、一致結果は「成功」、一致した内容は「ジャック」、一致した位置は 15 で始まり 19 で終わります。 | 例 6: 式「(go/s*)+」が「Let's go go go!」と一致する場合、一致結果は次のようになります。一致した内容は「go go go」です。一致した位置は次のようになります。 6時に終わって14時に終わります。 例7: 式「¥(/d+/.?/d*)」が「$10.9,¥20.5」と一致した場合、一致結果は「¥20.5」と一致します。到達点は次のとおりです: 6 から始まり 10 で終わります。ブラケット範囲を別途取得して照合した内容は「20.5」となる。 |
2.1 一致数の貪欲と非貪欲 |
「/w+」は、マッチング時にそのルールに準拠する可能な限り多くの文字と常に一致することがわかります。 2 番目の例では、最後の「d」とは一致しませんが、これは式全体が正常に一致するようにするためです。同様に、「*」と「{m,n}」を含む式は可能な限り一致し、「?」を含む式も一致するかどうかに応じて可能な限り「一致」します。このマッチング原理は「貪欲」モードと呼ばれます。
Non-greedy モード:
一致数を変更する特殊記号の後に「?」記号を追加して、一致数が変動する式の一致を最小限に抑えます。一致するかどうかは、可能な限り「不一致」で一致することができます。このマッチング原理は「非貪欲」モードと呼ばれ、「リラクタント」モードとも呼ばれます。一致する数が少ない場合、式全体は一致しません。貪欲モードと同様に、非貪欲モードでは、式全体が正常に一致するように最小限の一致が行われます。たとえば、テキスト「dxxxdxxxd」の場合、次のようになります:
expression |
matching result |
(d)(/w+?) |
?"最初の「d」以降の文字との一致を少なくすると、結果は次のようになります:「/w+?」は 1 つの「x」のみと一致します |
(d)(/w+?)(d) | for 式全体が正常に一致するには、次の「d」が一致する前に、「/w+?」が「xxx」と一致する必要があります。したがって、結果は次のようになります: "/w+?" は "xxx" と一致します |
その他のケースと例は次のとおりです:
例 1: 式「
aa
bb
aa
bb
例 2: 対照的に、式「
aa
bb
2.2 バックリファレンス /1, /2...
式が一致すると、式エンジンは括弧 "( )" に含まれる式と一致した文字列を記録します。マッチング結果を取得する際、括弧内の表現と一致した文字列を別途取得することができます。これは、前の例で何度も実証されています。実際のアプリケーションでは、ある境界を使って検索し、取得したい内容にその境界が含まれない場合には、括弧を使って範囲を指定する必要があります。たとえば、前の「
実は、「括弧内に含まれる式と一致した文字列」は、マッチング完了後に利用できるだけでなく、マッチング処理中にも利用することができます。式の後の部分は、前の「文字列とすでに一致した括弧内の部分一致」を参照できます。参照方法は「/」+数字です。 「/1」は最初の角括弧のペアで一致する文字列を指し、「/2」は 2 番目の角括弧のペアで一致する文字列を指します...というように、角括弧のペアに別の角括弧のペアが含まれる場合も同様です。外側のペア レイヤの括弧が最初にソートされます。つまり、左括弧 "(" が最初にあるペアが最初にソートされます。
例は次のとおりです。
例 1: 式 "('|")(.*?)(/ 1 )" " 'Hello', "World" " を照合した場合、照合結果は成功です。照合内容は " 'Hello' " です。次の照合を再度行うと、" "World" が照合できます。
例 2: 式「(/w)/1{4,}」が「aa bbbb abcdefg ccccc 111121111 999999999」と一致した場合、一致結果は次のようになります。一致した内容が再び「ccccc」の場合は、999999999 が返されます。この式では、「/w」範囲の文字を少なくとも 5 回繰り返す必要があります。
例 3: 式 ".*?/1>" は "
2.3 事前検索、一致なし
前の章では、抽象的な意味を表すいくつかの特殊記号について説明しました。 「 /b 」に共通するのは、文字自体には一致せず、「文字列の両端」または「文字間の隙間」に条件を付けるだけであるということです。この概念を理解すると、次のようになります。この節では引き続き、「両端」や「隙間」に条件を付けた、より柔軟な表現方法を紹介していきます
前方事前検索: "(?=xxxxx)"、"(?!xxxxx)"
形式: 「(?=xxxxx)」は、一致した文字列のうち、それが存在する「隙間」または「両端」に条件を付けます。隙間の右側がxxxxx部分の表現と一致する必要があります。これは、このギャップの追加条件としてのみ使用されるため、このギャップの後の文字と実際に一致する後続の式には影響しません。これは、「/b」の前の文字と一致しないのと似ています。
例 1: 「Windows (?=NT|XP)」という式は、「Windows 98、Windows NT、Windows 2000」と一致します。 「Windows NT」の「Windows」のみに一致し、他の「Windows」の単語は一致しません。
例 2: 式「(/w)((?=/1/1/1)(/1))+」が文字列「aaa ffffff 999999999」と一致する場合、最初の 6 つの「f」と一致します。 4、9 個の「9」のうち最初の 7 個と一致します。この式は次のように解釈できます。文字と数字が 4 回以上繰り返された場合、最後の 2 桁より前の部分が一致します。もちろん、この式はこのように記述する必要はありませんが、デモンストレーションの目的でのみ使用されます。
形式: ギャップの右側にある「(?!xxxxx)」は、式の xxxxx 部分と一致してはなりません。
例3:式「((?!/bstop/b).)+」が「fdjka ljfdl stop fjdsla fdj」と一致する場合、「stop」がない場合は先頭から前まで一致します。文字列 stop" 内の文字列全体と一致します。
例 4: 式「do(?!/w)」が文字列「done, do, Dog」と一致する場合、一致できるのは「do」のみです。この例では、「do」の後に「(?!/w)」を使用すると、「/b」を使用した場合と同じ効果があります。
逆方向事前検索: "(?
これら 2 つの形式の概念は、逆方向事前検索に必要な条件と似ています。 are : ギャップの「左側」では、2 つの形式はそれぞれ、右側を判断するのではなく、指定された式と一致する必要があるか、一致できない必要があります。 「前方事前検索」と同じです。これらはギャップの追加条件であり、文字自体には一致しません。
例 5: 式「(?
3. その他の共通ルール
前の説明では触れなかった、さまざまな正規表現エンジンに共通するルールもいくつかあります。
3.1 式では、「/xXX」と「/uXXXX」を使用して文字を表すことができます(「X」は 16 進数を表します)
/xXX0〜255の範囲で番号が付けられた文字、例: スペースは「/x20」で表すことができます | /uXXXX |
任意の文字は「/」で表すことができますu" 式「/s」、「/d」、「/w」、「/b」に「/中」 | 3.2 などの 4 桁の 16 進表現を追加します。同時に、対応する大文字は反対の意味を表します |
式 | は空白文字以外のすべての文字と一致します |
(「/s」は一致できます)各空白文字と一致します) | /D | |||||||||||||||||||||||||||||||
数字以外のすべての文字と一致します | /W | |||||||||||||||||||||||||||||||
すべての文字、数字、アンダースコア以外の文字と一致します | /B | |||||||||||||||||||||||||||||||
は、単語以外の境界、つまり、左側と右側の両方が "/w" の範囲内にある場合、または左側と右側のどちらも "/w" の範囲内にない場合の文字のギャップに一致します。 |
3.3 には式に特別な意味があり、文字自体の文字概要と一致させるには「/」を追加する必要があります
3.5 一般的に使用される式属性設定の概要: Ignorecase、Singleline、Multiline、Global Expression 属性
|
以上がJS 正規表現での RegExp オブジェクトと括弧の使用についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか

node.jsは、主にストリームのおかげで、効率的なI/Oで優れています。 ストリームはデータを段階的に処理し、メモリの過負荷を回避します。大きなファイル、ネットワークタスク、リアルタイムアプリケーションの場合。ストリームとTypeScriptのタイプの安全性を組み合わせることで、パワーが作成されます

PythonとJavaScriptのパフォーマンスと効率の違いは、主に以下に反映されています。1)解釈された言語として、Pythonはゆっくりと実行されますが、開発効率が高く、迅速なプロトタイプ開発に適しています。 2)JavaScriptはブラウザ内の単一のスレッドに限定されていますが、マルチスレッドおよび非同期I/Oを使用してnode.jsのパフォーマンスを改善でき、両方とも実際のプロジェクトで利点があります。

JavaScriptは1995年に発信され、Brandon Ikeによって作成され、言語をCに実現しました。 2。JavaScriptのメモリ管理とパフォーマンスの最適化は、C言語に依存しています。 3. C言語のクロスプラットフォーム機能は、さまざまなオペレーティングシステムでJavaScriptを効率的に実行するのに役立ちます。

JavaScriptはブラウザとnode.js環境で実行され、JavaScriptエンジンに依存してコードを解析および実行します。 1)解析段階で抽象的構文ツリー(AST)を生成します。 2)ASTをコンパイル段階のバイトコードまたはマシンコードに変換します。 3)実行段階でコンパイルされたコードを実行します。

PythonとJavaScriptの将来の傾向には、1。Pythonが科学コンピューティングの分野での位置を統合し、AI、2。JavaScriptはWebテクノロジーの開発を促進します。どちらもそれぞれのフィールドでアプリケーションシナリオを拡大し続け、パフォーマンスをより多くのブレークスルーを行います。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

ホットトピック









