teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

typo修正

2019/12/15 03:14

投稿

think49
think49

スコア18194

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  console.log(string.split(/(<[^>]*>)/).filter(token => token.length)); // ["<p>", "text", "<span>", "inner", "</span>", "</p>"]
8
8
  ```
9
9
 
10
- ### String,prototype.match
10
+ ### String.prototype.match
11
11
 
12
12
  ```JavaScript
13
13
  var string = '<p>text<span>inner</span></p>';

1

コード追記 (Array#filter)

2019/12/15 03:14

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,12 +1,18 @@
1
- `String.prototype.split` は**分割**するもので、全てにマッチするのは得意分野ではないのですが…。
1
+ ### String.prototype.split
2
2
 
3
3
  ```JavaScript
4
4
  var string = '<p>text<span>inner</span></p>';
5
5
 
6
- console.log(string.split(/(<[^>]*>)/)); // ["", "<p>", "text", "<span>", "inner", "</span>", "", "</p>", ""]
6
+ console.log(string.split(/(<[^>]*>)/)); // ["", "<p>", "text", "<span>", "inner", "</span>", "", "</p>", ""]
7
+ console.log(string.split(/(<[^>]*>)/).filter(token => token.length)); // ["<p>", "text", "<span>", "inner", "</span>", "</p>"]
8
+ ```
9
+
10
+ ### String,prototype.match
11
+
12
+ ```JavaScript
13
+ var string = '<p>text<span>inner</span></p>';
14
+
7
15
  console.log(string.match(/<[^>]*>|[^<>]+/g)); // ["<p>", "text", "<span>", "inner", "</span>", "</p>"]
8
16
  ```
9
17
 
10
- 一応、`Array.prototype.filter` で「空文字の要素」を取り除けば、`String,prototype.match` と同じ結果になります。
11
-
12
18
  Re: dadada-dadada さん