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

質問編集履歴

4

コード提示

2020/02/10 17:01

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -143,4 +143,10 @@
143
143
 
144
144
  正規表現でここまで苦戦するとは思ってなかったので、連続スペースとかハイフンかと、もうサーバー側で修正した方が早いかも。
145
145
  フロント側でもきっちりやりたいのは単なる自己満なので。。。
146
- なんだか手を出しちゃいけないものにハマっていってる気がする。
146
+ なんだか手を出しちゃいけないものにハマっていってる気がする。
147
+
148
+
149
+ # 最終追記
150
+
151
+ 既存の一致項目に影響がないまま、項33~43までの期待値と結果が一致することで良しとしたいと思います。
152
+ https://codepen.io/postman_tyo/pen/vYOOLNL

3

要件修正

2020/02/10 17:01

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -44,10 +44,11 @@
44
44
 
45
45
  ## 要件
46
46
  漢字とカタカナの入力を許容し、
47
- 全角ハイフンと全角スペースと半角スペースも許容するが
47
+ 全角ハイフン(長音)と全角スペースと半角スペースも許容するが
48
- 全角ハイフンと全角スペースと半角スペースについては連続で1文字までしか入力できないものとする。
48
+ 全角ハイフン(長音)と全角スペースと半角スペースについては連続で1文字までしか入力できないものとする。
49
49
 
50
50
 
51
+
51
52
  ## 漢字の取り扱い
52
53
  * ここでいう漢字とは、全角で1文字を表すものとする。
53
54
  * ㍻などのような環境依存文字は漢字と見做さない。
@@ -55,7 +56,6 @@
55
56
 
56
57
  ## カタカナの取り扱い
57
58
  * ここでいうカタカナとは、全角で1文字を表すものとし、以下のみをカタカナとして取り扱う。
58
- * 全角ハイフンもカタカナとして取り扱う。
59
59
 
60
60
  `清音`
61
61
  アイウエオ
@@ -81,7 +81,6 @@
81
81
  パピプペポ
82
82
 
83
83
  `その他`
84
-
85
84
 
86
85
  ァィゥェォ
87
86
  ヵヶッ
@@ -111,9 +110,10 @@
111
110
  |`漢 字 カ タ カ ナ` | NG |
112
111
 
113
112
 
114
- ## 全角ハイフンの取り扱い
113
+ ## 全角ハイフン(長音)の取り扱い
115
- * 文中の全角ハイフンは2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
114
+ * 文中の全角ハイフン(長音)は2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
116
- * 全角ハイフンはカタカナとして表現できる文中にしか存在してはならず、カタカナの文頭には含んではならないが文末には含むことができる。
115
+ * 全角ハイフン(長音)はカタカナとして表現できる文中にしか存在してはならず、カタカナの文頭には含んではならないが文末には含むことができる。
116
+ * 長音はひらがなかカタカナまでは区別する必要はなく、人間が全角ハイフンだとわかれば良い(ここは、あえて曖昧さを残す)
117
117
 
118
118
  |テスト文字列 |期待値 |
119
119
  |---|---|
@@ -137,5 +137,10 @@
137
137
  ```
138
138
  const pattern = /^([ァ-ン一-龥][  ]?)*(((([ァ-ン]|ー)[  ]?)*([ァ-ン]|ー))|[一-龥])$/
139
139
  console.log(pattern.test(value))
140
+ ```
140
141
 
141
- ```
142
+ ---
143
+
144
+ 正規表現でここまで苦戦するとは思ってなかったので、連続スペースとかハイフンかと、もうサーバー側で修正した方が早いかも。
145
+ フロント側でもきっちりやりたいのは単なる自己満なので。。。
146
+ なんだか手を出しちゃいけないものにハマっていってる気がする。

2

要件修正

2020/02/10 15:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -36,4 +36,106 @@
36
36
  |`漢字カタカナ  `|NG|
37
37
 
38
38
 
39
- 基本的な許容文字形式に加え、文字列の間にあるスペースは1つまでとしたいのです。
39
+ 基本的な許容文字形式に加え、文字列の間にあるスペースは1つまでとしたいのです。
40
+
41
+ # 追記
42
+
43
+ 細かいところは以下のように定めたいと思います。
44
+
45
+ ## 要件
46
+ 漢字とカタカナの入力を許容し、
47
+ 全角ハイフンと全角スペースと半角スペースも許容するが
48
+ 全角ハイフンと全角スペースと半角スペースについては連続で1文字までしか入力できないものとする。
49
+
50
+
51
+ ## 漢字の取り扱い
52
+ * ここでいう漢字とは、全角で1文字を表すものとする。
53
+ * ㍻などのような環境依存文字は漢字と見做さない。
54
+ * 吉野家などのような`吉`のような文字列でも人間が見て全角で1文字を表す漢字だと判断できるものは漢字と見做す。
55
+
56
+ ## カタカナの取り扱い
57
+ * ここでいうカタカナとは、全角で1文字を表すものとし、以下のみをカタカナとして取り扱う。
58
+ * 全角ハイフンもカタカナとして取り扱う。
59
+
60
+ `清音`
61
+ アイウエオ
62
+ カキクケコ
63
+ サシスセソ
64
+ タチツテト
65
+ ナニヌネノ
66
+ ハヒフヘホ
67
+ マミムメモ
68
+ ヤユヨ
69
+ ラリルレロ
70
+ ワヰヱヲ
71
+
72
+
73
+ `濁音`
74
+ ガギグゲゴ
75
+ ザジズゼゾ
76
+ ダヂヅデド
77
+ バビブベボ
78
+
79
+
80
+ `半濁音`
81
+ パピプペポ
82
+
83
+ `その他`
84
+
85
+
86
+ ァィゥェォ
87
+ ヵヶッ
88
+ ャュョ
89
+
90
+
91
+ ---
92
+ `以下は漢字で変換できるためカタカナとは認めない。(漢字とするかカタカナとするか悩ましい)`
93
+ ヵヶ
94
+
95
+
96
+
97
+ ## スペースの取り扱い
98
+ * 文頭の全角及び半角スペースは許容しない。
99
+ * 文末の全角及び半角スペースは許容しない。
100
+ * 文中の全角及び半角スペースは2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
101
+
102
+ ※以下に例を示すが、全角スペースも同様の扱いとする。
103
+
104
+ |テスト文字列 |期待値 |
105
+ |---|---|
106
+ |`漢字 カタカナ` | OK |
107
+ |`漢字 カタカナ` | NG |
108
+ |`漢字 カ タカナ` | OK |
109
+ |`漢字 カ タカナ` | NG |
110
+ |`漢 字 カ タ カ ナ` | OK |
111
+ |`漢 字 カ タ カ ナ` | NG |
112
+
113
+
114
+ ## 全角ハイフンの取り扱い
115
+ * 文中の全角ハイフンは2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
116
+ * 全角ハイフンはカタカナとして表現できる文中にしか存在してはならず、カタカナの文頭には含んではならないが文末には含むことができる。
117
+
118
+ |テスト文字列 |期待値 |
119
+ |---|---|
120
+ |`漢ー字ギータ` | NG |
121
+ |`漢字ギータ` | OK |
122
+ |`漢字ギーター` | OK |
123
+ |`漢字ギーーター` | NG
124
+ |`漢字ギター` | OK |
125
+ |`漢字ーギター` | NG |
126
+ |`漢字ギータ` | OK |
127
+ |`ギーター漢ー字` | NG |
128
+ |`ギーター漢字` | OK |
129
+ |`ギーーター漢字` | NG
130
+ |`ギター漢字` | OK |
131
+ |`ーギター漢字` | NG |
132
+
133
+ ## 検証方法
134
+
135
+ カスタムルールとしてグローバルに使いまわしたいため、以下の形式のコードでtest関数を用いてチェックするものとする。
136
+
137
+ ```
138
+ const pattern = /^([ァ-ン一-龥][  ]?)*(((([ァ-ン]|ー)[  ]?)*([ァ-ン]|ー))|[一-龥])$/
139
+ console.log(pattern.test(value))
140
+
141
+ ```

1

ddd

2020/02/10 14:43

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -36,4 +36,4 @@
36
36
  |`漢字カタカナ  `|NG|
37
37
 
38
38
 
39
- 基本的な許容文字に加え、文字列の間にあるスペースは1つまでとしたいのです。
39
+ 基本的な許容文字形式に加え、文字列の間にあるスペースは1つまでとしたいのです。