最近、JS の正規表現マッチングの落とし穴を発見したのですが、その時はあまりにも奇妙だったので、何か超常現象が起こっているのではないかと疑うほどでした。 以下はピットコードです var str=["二七1","二七2","金水","二七3","二七4","二七5"] var reg = new RegExp ("二七", "g"); for(var i=0;i<str.length;i++){ if(reg.test(str[i])){ コンソールログ(str[i]) } } 正規表現を使用してstrをグローバルに一致させ、条件に合致したときにそれを出力します。 明らかな理由なく 2 つが欠落しており、それらについては別途判断します。 var str=["二七1","二七2","金水","二七3","二七4","二七5"] var reg = new RegExp ("二七", "g"); for(var i=0;i<str.length;i++){ if(reg.test(str[i])){ コンソールログ(str[i]) } もし(i==1){ コンソールログ(reg.test(str[i])) } もし(i==4){ コンソールログ(reg.test(str[i])) } } それで私はこれを手に入れました もう 1 つが欠けていますが、欠けている 2 つは規則性チェックを満たしていることがわかります。その後、インターネットで次の文章を見つけました。 文字列が正規表現で正常に一致した場合、lastIndex は、文字列グローバル一致の次の検索の開始点として、最初に一致した文字列の位置に設定されます。後続のフィールドが正常に一致した場合、一致が失敗するまで lastIndex が繰り返し再割り当てされ、0 にリセットされます。 しかし、先生に聞いたところ、一致が見つかった後はlastIndex+1が返されると教えてくれました。つまり、最初に一致したとき、lastIndexは2でした。この2は文字列の添え字であり、配列の添え字ではありません。したがって、str[1]を判断するときは、0からではなく、文字列の添え字2から始まります。したがって、2番目の判断は偽であり、一致は失敗します。LastIndexは0に設定されているため、3番目の一致は成功できます。 したがって、判定結果が true になると、lastIndex は 0 に設定され、データは正常になります。 データは正常です。 要約する グローバル マッチングを使用する場合、各検索後に lastIndex が 0 に設定されるか、グローバル マッチングは使用されず、直接マッチングが実行されます。 ネットユーザーのまとめは以下のとおりです。
困っている友人は参考にしてください。JS 正規マッチングの落とし穴の記録に関するこの記事はこれで終わりです。より関連性の高い JS 正規マッチングの落とし穴については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援してください。 以下もご興味があるかもしれません:
|
<<: 2 級コンピュータ試験のための MySQL の知識ポイントとよく使用される MYSQL コマンド
>>: tomcatでcatalina.outログをカットする3つの方法の詳細な説明
目次1. 使用方法2. 準備3. 文法3.1 変数と代入3.2 入力および出力パラメータ3.3 プロ...
ポーリングアルゴリズムの紹介多くの人が職場で nginx を使用しており、その設定に精通しています。...
1. 目的:コードの保守が容易になり、さまざまなデータの分類が明確になります。 2. store/i...
注: ソフトウェアのインストールの基本ディレクトリ パスは /usr/local です。ソフトウェア...
<br />XHTML と CSS がオブジェクト指向だったらよかったのに。 。太陽は北...
React は、開発者が Web およびモバイルベースのアプリケーションを作成するために使用するオ...
1. 心の旅最近コックピットを書いていたときに、背景画像を単純に特定の角度に回転させるという問題につ...
イギリスBFC: ブロック書式設定コンテキストBFCレイアウトルール内箱は縦方向に次々に配置されます...
この記事では、参考までにMySQL 5.7.18 MSIインストールチュートリアルを紹介します。具体...
多くのプロジェクトでは、中央に灰色の分割線があり、両側に分割線がないグリッド表示の機能を実装する必要...
インストール手順 rpm -ivh mysql-コミュニティ-共通-5.7.18-1.el7.x86...
a タグではクリック イベントがよく使用されます。 1. href="javascript...
MySQL には次のログがあります。エラーログ: -log-errクエリログ: -logスロークエリ...
この記事では、弾幕効果を実現するためのjQueryの具体的なコードを参考までに共有します。具体的な内...
すべてがファイルです! UNIX はすでにそれを言っています。エリック・レイモンドはこう言いました。...