回答編集履歴
1
ついき
test
CHANGED
@@ -35,7 +35,7 @@
|
|
35
35
|
- ただ単に文字列を書くだけではなく、`[a-z]`←a〜zのいずれか1文字のような条件を書くこともできます。
|
36
36
|
- 詳しくはお調べください。
|
37
37
|
- 「フラグ」は今回の場合でしたら、`g`となります。
|
38
|
-
- `g`は、「グローバル検索」の意味で、つまり1回ヒットしたら終わりではなく、全文字検索するということです。
|
38
|
+
- `g`は、「グローバル検索」の意味で、つまり1回ヒットしたら終わりではなく、全文字検索するということです。`.replaceAll()`の代わりをしてくれます。
|
39
39
|
- 他にも`i`など、いろいろあります。`gi`と複数書いてもいいです。詳しくはお調べください。
|
40
40
|
|
41
41
|
##### 例のコード result1の問題点
|
@@ -57,16 +57,22 @@
|
|
57
57
|
こちらも同様に、最後の方の「doggy」が「monkeygy」になってしまうという問題点があります。
|
58
58
|
単純に「d」「o」「g」という並びの文字列をmonkeyに変更するという条件だからです。
|
59
59
|
|
60
|
+
しかし質問者様のご質問は、
|
61
|
+
|
62
|
+
> replaceAllと同じ動きにしたい場合どうすればいいのでしょうか?
|
63
|
+
|
64
|
+
ですので、その場合はこのresult2が正解となります。
|
65
|
+
|
60
66
|
##### 例のコード result3の解説
|
61
67
|
```javascript
|
62
68
|
const result3 = p.replace(/(?<!\w)dog(?!\w)/g, 'monkey');
|
63
69
|
// monkey. The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy? Hey, doggy! monkey.
|
64
70
|
```
|
65
|
-
|
71
|
+
上記の問題点を解決するために、より条件を厳しくした正規表現を書いたものがresult3です。
|
66
72
|
こちらは想定通りの置換をしてくれていると思います。
|
67
73
|
|
68
74
|
- `(?<!\w)`は、dogの **_前_** に、a〜z、A〜Z、0〜9、_がない という条件を表現しています。
|
69
75
|
- `(?!\w)`は、dogの **_後_** に、a〜z、A〜Z、0〜9、_がない という条件を表現しています。
|
70
76
|
- doggyは、dogのあとにさらにgがありますから、条件に合致せず、monkeyに置換されません。
|
71
77
|
|
72
|
-
正規表現は他にもいろいろな
|
78
|
+
正規表現は他にもいろいろなパターンを表現することができますので、興味や必要がおありでしたら是非一度お勉強なさってみてください。
|