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

回答編集履歴

3

検証コードを追記

2019/06/13 11:35

投稿

think49
think49

スコア18194

answer CHANGED
@@ -30,8 +30,26 @@
30
30
  /[^0 ]|^$/
31
31
  ```
32
32
 
33
+ ### 検証コード
34
+
35
+ ```JavaScript
36
+ 'use strict';
37
+ function notZero1 (string) { return /^(?!0+$)/.test(string); }
38
+ function notZero2 (string) { return /[^0]|^$/.test(string); }
39
+ function notZero3 (string) { return /[^0 ]|^$/.test(string); }
40
+ function notZero4 (string) { return /^(?![0 ]+$)/.test(string); }
41
+ function test (array, fn) { console.log(JSON.stringify(array.map(fn))); }
42
+
43
+ const array = ['010', '123', '000', '00 000 0000'];
44
+ test(array, notZero1); // [true,true,false,true]
45
+ test(array, notZero2); // [true,true,false,true]
46
+ test(array, notZero3); // [true,true,false,false]
47
+ test(array, notZero4); // [true,true,false,false]
48
+ ```
49
+
33
50
  ### 更新履歴
34
51
 
35
- - 2019/06/13 18:32 2,3番目の正規表現が期待通りに動作しない不具合を修正しました
52
+ - 2019/06/13 18:32 2,3番目の正規表現が期待通りに動作しない不具合を修正
53
+ - 2019/06/13 20:34 検証コードを追記
36
54
 
37
55
  Re: akitomo さん

2

2,3番目の正規表現が期待通りに動作しない不具合を修正しました

2019/06/13 11:35

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,3 +1,5 @@
1
+ ### 否定先読み
2
+
1
3
  > それ意外であればマッチ
2
4
 
3
5
  **否定先読み**を使用して下さい。
@@ -6,22 +8,30 @@
6
8
  /^(?!0+$)/
7
9
  ```
8
10
 
11
+ ### 文字クラス rev1
12
+
9
13
  もしくは、**文字クラス**を使用して下さい。
10
14
 
11
15
  ```JavaScript
12
- /^[^0]*$/
16
+ /[^0]|^$/
13
17
  ```
14
18
 
15
19
  基本的に、正規表現で否定条件は、上述の2つ、**否定後読み**のいずれかを使用して作成します。
16
20
  http://js-next.hatenablog.com/entry/2015/11/20/083622
17
21
 
22
+ ### 文字クラス rev2
23
+
18
24
  > また、できればマッチしてほしくないのが、
19
25
  > 「00000 0」「00000 0」「00000 0」「00000  0」
20
26
 
21
27
  前述の否定条件を文字クラスにして、「否定条件となる文字」を入れて下さい。
22
28
 
23
29
  ```JavaScript
24
- /^[^0 ]*$/
30
+ /[^0 ]|^$/
25
31
  ```
26
32
 
33
+ ### 更新履歴
34
+
35
+ - 2019/06/13 18:32 2,3番目の正規表現が期待通りに動作しない不具合を修正しました
36
+
27
37
  Re: akitomo さん

1

文字クラス、否定後読み

2019/06/13 09:33

投稿

think49
think49

スコア18194

answer CHANGED
@@ -1,9 +1,27 @@
1
1
  > それ意外であればマッチ
2
2
 
3
- 否定先読みを使用して下さい。
3
+ **否定先読み**を使用して下さい。
4
4
 
5
5
  ```JavaScript
6
6
  /^(?!0+$)/
7
7
  ```
8
8
 
9
+ もしくは、**文字クラス**を使用して下さい。
10
+
11
+ ```JavaScript
12
+ /^[^0]*$/
13
+ ```
14
+
15
+ 基本的に、正規表現で否定条件は、上述の2つ、**否定後読み**のいずれかを使用して作成します。
16
+ http://js-next.hatenablog.com/entry/2015/11/20/083622
17
+
18
+ > また、できればマッチしてほしくないのが、
19
+ > 「00000 0」「00000 0」「00000 0」「00000  0」
20
+
21
+ 前述の否定条件を文字クラスにして、「否定条件となる文字」を入れて下さい。
22
+
23
+ ```JavaScript
24
+ /^[^0 ]*$/
25
+ ```
26
+
9
27
  Re: akitomo さん