回答編集履歴
17
追記
test
CHANGED
@@ -57,3 +57,19 @@
|
|
57
57
|
console.log(matched);
|
58
58
|
|
59
59
|
```
|
60
|
+
|
61
|
+
---
|
62
|
+
|
63
|
+
--追記--
|
64
|
+
|
65
|
+
コメントで指摘のありました`"... style="color:#aaa; background-color:#bbb;"`について、一応頑張ってみました
|
66
|
+
|
67
|
+
```javascript
|
68
|
+
|
69
|
+
const matched = $('div').html().match(/[##][^\";]*?(?=[\s<##])/g);
|
70
|
+
|
71
|
+
console.log(matched);
|
72
|
+
|
73
|
+
```
|
74
|
+
|
75
|
+
ですが、他の回答者さんから`<a> はネスト出来ない`という意見もありますので、正規表現1発では、あとあと`落とし穴に引っかかりそう`ですね、、。
|
16
誤字修正
test
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
|
50
50
|
|
51
|
-
aタグで囲いたい場合は、`match()`で上記正規表現
|
51
|
+
aタグで囲いたい場合は、`match()`で上記の正規表現を使って取り出して、前後に文字列を足してあげれば良いのでは?
|
52
52
|
|
53
53
|
```javascript
|
54
54
|
|
15
追記
test
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
どのような文字列が来るかを想像しながら、正規表現を見直してみましょう。
|
2
|
+
|
3
|
+
|
4
|
+
|
1
5
|
> カラーコード部分(およびリンクのURL部分)以外の「#で始まる文字列」を置換したいのですが
|
2
6
|
|
3
7
|
> どうもカラーコード部分も置換されてしまいます
|
14
追記
test
CHANGED
@@ -41,3 +41,15 @@
|
|
41
41
|
$('div').html( replaced );
|
42
42
|
|
43
43
|
```
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
aタグで囲いたい場合は、`match()`で上記正規表現と使って取り出して、前後に文字列を足してあげれば良いのでは?
|
48
|
+
|
49
|
+
```javascript
|
50
|
+
|
51
|
+
const matched = $('div').html().match(/[##][^\"]*?(?=[\s<##])/g);
|
52
|
+
|
53
|
+
console.log(matched);
|
54
|
+
|
55
|
+
```
|
13
ちょい修正
test
CHANGED
@@ -24,6 +24,10 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
+
---
|
28
|
+
|
29
|
+
|
30
|
+
|
27
31
|
`!`に置き換えしてみました。
|
28
32
|
|
29
33
|
|
12
追記
test
CHANGED
@@ -26,6 +26,10 @@
|
|
26
26
|
|
27
27
|
`!`に置き換えしてみました。
|
28
28
|
|
29
|
+
|
30
|
+
|
31
|
+
`#か#`で始まって`"`を含まず、直後に` `か`<`か`#`か`#`がある文字列
|
32
|
+
|
29
33
|
```javascript
|
30
34
|
|
31
35
|
const replaced = $('div').html().replace(/[##][^\"]*?(?=[\s<##])/g, '!');
|
11
修正
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
--追記--
|
20
20
|
|
21
|
-
ここで、着目
|
21
|
+
ここで、着目を htmlの閉じタグ`>`にしない理由は、htmlタグには他の属性が入ってくる可能性があるからです。
|
22
22
|
|
23
23
|
なので htmlタグの中に記載された`#`にはそのあと必ず`"`があるだろうという判断です。
|
24
24
|
|
10
追記
test
CHANGED
@@ -16,6 +16,14 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
+
--追記--
|
20
|
+
|
21
|
+
ここで、着目が htmlの閉じタグ`>`にしない理由は、htmlタグには他の属性が入ってくる可能性があるからです。
|
22
|
+
|
23
|
+
なので htmlタグの中に記載された`#`にはそのあと必ず`"`があるだろうという判断です。
|
24
|
+
|
25
|
+
|
26
|
+
|
19
27
|
`!`に置き換えしてみました。
|
20
28
|
|
21
29
|
```javascript
|
9
追記
test
CHANGED
@@ -16,6 +16,8 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
+
`!`に置き換えしてみました。
|
20
|
+
|
19
21
|
```javascript
|
20
22
|
|
21
23
|
const replaced = $('div').html().replace(/[##][^\"]*?(?=[\s<##])/g, '!');
|
8
修正
test
CHANGED
@@ -1,18 +1,20 @@
|
|
1
|
-
|
1
|
+
> カラーコード部分(およびリンクのURL部分)以外の「#で始まる文字列」を置換したいのですが
|
2
2
|
|
3
|
-
|
3
|
+
> どうもカラーコード部分も置換されてしまいます
|
4
4
|
|
5
|
-
```javascript
|
6
5
|
|
7
|
-
const replaced = $('div').html().replace(/[##][^\"]*?[Gグ]/g, '!');
|
8
6
|
|
9
|
-
|
7
|
+
ということなので`"`を弾くことで、`#カラーコード`も、`aタグの中の#`もすっ飛ばせます。
|
10
8
|
|
11
|
-
```
|
12
9
|
|
13
|
-
---
|
14
10
|
|
15
|
-
|
11
|
+
`color:`や`/#top`に着目するのではなく
|
12
|
+
|
13
|
+
`color:#f90"`<-の`"`
|
14
|
+
|
15
|
+
`/#top"`<-の`"` に着目すれば良いのではというアイデアです。
|
16
|
+
|
17
|
+
|
16
18
|
|
17
19
|
```javascript
|
18
20
|
|
@@ -21,13 +23,3 @@
|
|
21
23
|
$('div').html( replaced );
|
22
24
|
|
23
25
|
```
|
24
|
-
|
25
|
-
`"`を弾くことで、`#カラーコード`も、`aタグの中の#`もすっ飛ばせます。
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
`color:`や`/#top`に着目するのではなく
|
30
|
-
|
31
|
-
`color:#f90"`<-の`"`
|
32
|
-
|
33
|
-
`/#top"`<-の`"` に着目すれば良いのではというアイデアです。
|
7
追記
test
CHANGED
@@ -23,3 +23,11 @@
|
|
23
23
|
```
|
24
24
|
|
25
25
|
`"`を弾くことで、`#カラーコード`も、`aタグの中の#`もすっ飛ばせます。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
`color:`や`/#top`に着目するのではなく
|
30
|
+
|
31
|
+
`color:#f90"`<-の`"`
|
32
|
+
|
33
|
+
`/#top"`<-の`"` に着目すれば良いのではというアイデアです。
|
6
追記
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
```javascript
|
18
18
|
|
19
|
-
const replaced = $('div').html().replace(/[##][^\"]*?(?=[\s<#])/g, '!');
|
19
|
+
const replaced = $('div').html().replace(/[##][^\"]*?(?=[\s<##])/g, '!');
|
20
20
|
|
21
21
|
$('div').html( replaced );
|
22
22
|
|
5
修正
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
```javascript
|
18
18
|
|
19
|
-
const replaced = $('div').html().replace(/[##][^\"]*?(?=[\s<])/g, '!');
|
19
|
+
const replaced = $('div').html().replace(/[##][^\"]*?(?=[\s<#])/g, '!');
|
20
20
|
|
21
21
|
$('div').html( replaced );
|
22
22
|
|
4
修正
test
CHANGED
@@ -22,4 +22,4 @@
|
|
22
22
|
|
23
23
|
```
|
24
24
|
|
25
|
-
`"`を弾くことで、カラーコードもaタグもすっ飛ばせます。
|
25
|
+
`"`を弾くことで、`#カラーコード`も、`aタグの中の#`もすっ飛ばせます。
|
3
追記
test
CHANGED
@@ -21,3 +21,5 @@
|
|
21
21
|
$('div').html( replaced );
|
22
22
|
|
23
23
|
```
|
24
|
+
|
25
|
+
`"`を弾くことで、カラーコードもaタグもすっ飛ばせます。
|
2
追記
test
CHANGED
@@ -9,3 +9,15 @@
|
|
9
9
|
$('div').html( replaced );
|
10
10
|
|
11
11
|
```
|
12
|
+
|
13
|
+
---
|
14
|
+
|
15
|
+
なんか意図が違ったみたいなので訂正
|
16
|
+
|
17
|
+
```javascript
|
18
|
+
|
19
|
+
const replaced = $('div').html().replace(/[##][^\"]*?(?=[\s<])/g, '!');
|
20
|
+
|
21
|
+
$('div').html( replaced );
|
22
|
+
|
23
|
+
```
|
1
追記
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
+
これはどうでしょう? `#か#`で始まって`"`を含まず`Gかグ`で終わる 文字列
|
2
|
+
|
1
|
-
|
3
|
+
`!`に置き換えてみました
|
2
4
|
|
3
5
|
```javascript
|
4
6
|
|