SQA 2. 正規表現(テストとグローバル検索)


⑨¥この問題は学習当時の一人が提起した問題で、学習グループと一緒に考えて解決する機会になりたいので、勉強してみました.(面白かったですハハ)
📌 Question
1.状況
「who」を含む文字列または含まない文字列を複数作成し、「who」を含む文字列のみを返すように要求しました./who//who/gの結果がどう違うのか分かりませんが、/who/を使用して返される文字列は、passedStrs変数です./who/gを使用して返される文字列を比較し、passedStrs_g変数に割り当てます.
const tgStrs = [
'who is who',
'who is it',
'it is who',
'what is it',
'what who what'
];
const regExp = /who/;
const regExp_g = /who/g;
const passedStrs = tgStrs.filter(tg => regExp.test(tg));
const passedStrs_g = tgStrs.filter(tg => regExp_g.test(tg));
2.結果
文字列'who is it'は正規表現/who/gで検索されない.
// 정규표현식 /who/를 사용한 결과
console.log(passedStrs);
/*
(4) ["who is who", "who is it", "it is who", "what who what"]
0: "who is who"
1: "who is it"
2: "it is who"
3: "what who what"
*/
正規表現/who/gを使用した結果
「whois it」が一致しません
console.log(passedStrs_g);
/*
(3) ["who is who", "it is who", "what who what"]
0: "who is who"
1: "it is who"
2: "what who what"
*/
// tgStrs[1] = 'who is it'
regExp_g.test(tgStrs[1]) // false
tgStrs[1].match(regExp_g); // ["who"]
.match()でターゲットをマッチングします.test()結果は「who」...
📌 私の答え
今日初めて見たのは
  • 正規儀式で、
    この問題を解決するには、状況によって結果をどのように変えるかが私にとって重要です.
  • 1.まずmdn/who/何を使うか.../who/gとは何かを学びました.

  • 正規表現は、文字列に現れる特定の文字の組み合わせに対応するモードです.

  • 様々なパターンと方法があり、様々なパターンが正規の文字/ab+c/で包まれています.

  • 問題は、パターンが見えず、タグが存在することです.
    (フラグは、通常の式で使用される設定値で、6種類あります.)

  • /g検索した値を文字列全体で検索します.
  • =>/who/はwhoという名前のものを検索するだけで、/who/gは文字列全体を専門に検索します.
    2. test
  • test()は、所与の文字列が正規表現を満たすか否かを判別し、ブール値とする.
  • =>だから私が考えたのは、/gで文字列全体を検索すると、テストの値にマークがなく、テストの値と一致しないと、testが異なることはありません.
    3.テストと/g
  • testと/gの関係をグーグル化し、ありがたいことにmdnは解決策を得た.
  • 🎈 正規表現にグローバルタグが設定されている場合、test()メソッドは正規表現のlastIndexを更新します.
    test()を再度呼び出すと、testのパラメータ検索はlastIndexから続行されます.
    test()がtrueを返すたびにlastIndex値が増加します.

  • 例文のtgStrs arrayの要素を少し修正しました.

  • 2番目の要素(「who is it」)は最初の意図通りに出力されなかったので、「who is it」に変更して再テストします.

  • 正常出力!

  • testと/gとlastIndexの関係を理解した.
  • 4.結論

  • 最初のテストでwhoを見つけて、初期値のlastIndexを格納した場合、次のarray elementに移動してテストします!

  • この操作を繰り返すとlastIndexに基づいて値が検索されるため、2番目の「who is it」は前の要素lastIndex=3以降のwhoではないためfalse

  • falseの場合、lastIndex値は0に戻り、次の要素は正常にwhoを出力します.

  • このような構造で展開されています.
  • 5.残念な点
  • 要素を直接修正してこそ、問題を曖昧に把握することができます.実戦では要因を変えることができない場合もあるので、何とかして問題を把握しなければならない.
    △mdnもよく読んでください.