回答編集履歴
1
先読み
answer
CHANGED
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
出来ない方向でまとまっているようですが、技術的には可能です。
|
|
2
|
-
(以下、モバイル端末で未検証コードを書いているので、叩き台にして下さい)
|
|
3
2
|
|
|
3
|
+
### 消費する
|
|
4
|
+
|
|
5
|
+
以下、モバイル端末で未検証コードを書いているので、叩き台にして下さい。
|
|
6
|
+
|
|
4
7
|
```JavaScript
|
|
5
8
|
string.replace(/(<a\s[^>]*>[^<]*(?:<(?!/a>)[^>]*>[^<]*)*</a)(?=>)|(>[^<]*)(?=<|$)/g, (match,anchor,text) => anchor ? anchor : text.replace(/hoge/g, 'fuga'));
|
|
6
9
|
```
|
|
7
10
|
|
|
8
11
|
ご覧の通り、正規表現が複雑化するので、正規表現に不慣れであれば、お勧めはしません。
|
|
9
12
|
|
|
13
|
+
### 先読み
|
|
14
|
+
|
|
15
|
+
「終了タグが省略されないこと」が保証されているなら、
|
|
16
|
+
(上に同じく未検証)
|
|
17
|
+
|
|
18
|
+
```JavaScript
|
|
19
|
+
string.replace(/>([^<]*)(?=(?:<(?!(?:/a>|a[\s>])[^>]*>[^<]*)*(?:<a[\s>]|$))/g, (match,text) => '>' + text.replace(/hoge/g, 'fuga'));
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### XPath
|
|
23
|
+
|
|
10
|
-
XPathでテキストノードを得て、置換
|
|
24
|
+
既存DOMからテキストノード値を書き換えるなら、私はXPathでテキストノードを得て、置換させます。
|
|
11
25
|
https://teratail.com/questions/31198
|
|
12
26
|
|
|
13
27
|
Re: pipo さん
|