回答編集履歴

17

追記

2018/12/02 12:41

投稿

colling
colling

スコア798

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

誤字修正

2018/12/02 12:41

投稿

colling
colling

スコア798

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

追記

2018/12/01 05:41

投稿

colling
colling

スコア798

test CHANGED
@@ -1,3 +1,7 @@
1
+ どのような文字列が来るかを想像しながら、正規表現を見直してみましょう。
2
+
3
+
4
+
1
5
  > カラーコード部分(およびリンクのURL部分)以外の「#で始まる文字列」を置換したいのですが
2
6
 
3
7
  > どうもカラーコード部分も置換されてしまいます

14

追記

2018/12/01 05:40

投稿

colling
colling

スコア798

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

ちょい修正

2018/12/01 05:37

投稿

colling
colling

スコア798

test CHANGED
@@ -24,6 +24,10 @@
24
24
 
25
25
 
26
26
 
27
+ ---
28
+
29
+
30
+
27
31
  `!`に置き換えしてみました。
28
32
 
29
33
 

12

追記

2018/12/01 01:02

投稿

colling
colling

スコア798

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

修正

2018/12/01 00:55

投稿

colling
colling

スコア798

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  --追記--
20
20
 
21
- ここで、着目 htmlの閉じタグ`>`にしない理由は、htmlタグには他の属性が入ってくる可能性があるからです。
21
+ ここで、着目 htmlの閉じタグ`>`にしない理由は、htmlタグには他の属性が入ってくる可能性があるからです。
22
22
 
23
23
  なので htmlタグの中に記載された`#`にはそのあと必ず`"`があるだろうという判断です。
24
24
 

10

追記

2018/12/01 00:46

投稿

colling
colling

スコア798

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

追記

2018/12/01 00:41

投稿

colling
colling

スコア798

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

修正

2018/11/30 23:29

投稿

colling
colling

スコア798

test CHANGED
@@ -1,18 +1,20 @@
1
- これはどうでしょう? `#か#`で始まって`"`を含まず`Gかグ`で終わ 文字列
1
+ > カラーコード部分(およびリンクのURL部分)以外の「#で始まる文字列」を置換したいのですが
2
2
 
3
- `!`にした
3
+ > どうもカラーコード部分も置換されいます
4
4
 
5
- ```javascript
6
5
 
7
- const replaced = $('div').html().replace(/[##][^\"]*?[Gグ]/g, '!');
8
6
 
9
- $('div').html( replaced );
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

追記

2018/11/30 22:59

投稿

colling
colling

スコア798

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

追記

2018/11/30 16:30

投稿

colling
colling

スコア798

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

修正

2018/11/30 16:21

投稿

colling
colling

スコア798

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

修正

2018/11/30 16:20

投稿

colling
colling

スコア798

test CHANGED
@@ -22,4 +22,4 @@
22
22
 
23
23
  ```
24
24
 
25
- `"`を弾くことで、カラーコードもaタグもすっ飛ばせます。
25
+ `"`を弾くことで、`#カラーコード`、`aタグの中の#`もすっ飛ばせます。

3

追記

2018/11/30 16:14

投稿

colling
colling

スコア798

test CHANGED
@@ -21,3 +21,5 @@
21
21
  $('div').html( replaced );
22
22
 
23
23
  ```
24
+
25
+ `"`を弾くことで、カラーコードもaタグもすっ飛ばせます。

2

追記

2018/11/30 16:11

投稿

colling
colling

スコア798

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

追記

2018/11/30 16:07

投稿

colling
colling

スコア798

test CHANGED
@@ -1,4 +1,6 @@
1
+ これはどうでしょう? `#か#`で始まって`"`を含まず`Gかグ`で終わる 文字列
2
+
1
- これはどうでょう?
3
+ `!`に置き換えてみま
2
4
 
3
5
  ```javascript
4
6