質問編集履歴

4

コード提示

2020/02/10 17:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -289,3 +289,15 @@
289
289
  フロント側でもきっちりやりたいのは単なる自己満なので。。。
290
290
 
291
291
  なんだか手を出しちゃいけないものにハマっていってる気がする。
292
+
293
+
294
+
295
+
296
+
297
+ # 最終追記
298
+
299
+
300
+
301
+ 既存の一致項目に影響がないまま、項33~43までの期待値と結果が一致することで良しとしたいと思います。
302
+
303
+ https://codepen.io/postman_tyo/pen/vYOOLNL

3

要件修正

2020/02/10 17:01

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -90,9 +90,11 @@
90
90
 
91
91
  漢字とカタカナの入力を許容し、
92
92
 
93
- 全角ハイフンと全角スペースと半角スペースも許容するが
93
+ 全角ハイフン(長音)と全角スペースと半角スペースも許容するが
94
-
94
+
95
- 全角ハイフンと全角スペースと半角スペースについては連続で1文字までしか入力できないものとする。
95
+ 全角ハイフン(長音)と全角スペースと半角スペースについては連続で1文字までしか入力できないものとする。
96
+
97
+
96
98
 
97
99
 
98
100
 
@@ -112,8 +114,6 @@
112
114
 
113
115
  * ここでいうカタカナとは、全角で1文字を表すものとし、以下のみをカタカナとして取り扱う。
114
116
 
115
- * 全角ハイフンもカタカナとして取り扱う。
116
-
117
117
 
118
118
 
119
119
  `清音`
@@ -164,8 +164,6 @@
164
164
 
165
165
  `その他`
166
166
 
167
-
168
-
169
167
 
170
168
 
171
169
  ァィゥェォ
@@ -224,11 +222,13 @@
224
222
 
225
223
 
226
224
 
227
- ## 全角ハイフンの取り扱い
225
+ ## 全角ハイフン(長音)の取り扱い
228
-
226
+
229
- * 文中の全角ハイフンは2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
227
+ * 文中の全角ハイフン(長音)は2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
230
-
228
+
231
- * 全角ハイフンはカタカナとして表現できる文中にしか存在してはならず、カタカナの文頭には含んではならないが文末には含むことができる。
229
+ * 全角ハイフン(長音)はカタカナとして表現できる文中にしか存在してはならず、カタカナの文頭には含んではならないが文末には含むことができる。
230
+
231
+ * 長音はひらがなかカタカナまでは区別する必要はなく、人間が全角ハイフンだとわかれば良い(ここは、あえて曖昧さを残す)
232
232
 
233
233
 
234
234
 
@@ -276,6 +276,16 @@
276
276
 
277
277
  console.log(pattern.test(value))
278
278
 
279
-
280
-
281
279
  ```
280
+
281
+
282
+
283
+ ---
284
+
285
+
286
+
287
+ 正規表現でここまで苦戦するとは思ってなかったので、連続スペースとかハイフンかと、もうサーバー側で修正した方が早いかも。
288
+
289
+ フロント側でもきっちりやりたいのは単なる自己満なので。。。
290
+
291
+ なんだか手を出しちゃいけないものにハマっていってる気がする。

2

要件修正

2020/02/10 15:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -75,3 +75,207 @@
75
75
 
76
76
 
77
77
  基本的な許容文字形式に加え、文字列の間にあるスペースは1つまでとしたいのです。
78
+
79
+
80
+
81
+ # 追記
82
+
83
+
84
+
85
+ 細かいところは以下のように定めたいと思います。
86
+
87
+
88
+
89
+ ## 要件
90
+
91
+ 漢字とカタカナの入力を許容し、
92
+
93
+ 全角ハイフンと全角スペースと半角スペースも許容するが
94
+
95
+ 全角ハイフンと全角スペースと半角スペースについては連続で1文字までしか入力できないものとする。
96
+
97
+
98
+
99
+
100
+
101
+ ## 漢字の取り扱い
102
+
103
+ * ここでいう漢字とは、全角で1文字を表すものとする。
104
+
105
+ * ㍻などのような環境依存文字は漢字と見做さない。
106
+
107
+ * 吉野家などのような`吉`のような文字列でも人間が見て全角で1文字を表す漢字だと判断できるものは漢字と見做す。
108
+
109
+
110
+
111
+ ## カタカナの取り扱い
112
+
113
+ * ここでいうカタカナとは、全角で1文字を表すものとし、以下のみをカタカナとして取り扱う。
114
+
115
+ * 全角ハイフンもカタカナとして取り扱う。
116
+
117
+
118
+
119
+ `清音`
120
+
121
+ アイウエオ
122
+
123
+ カキクケコ
124
+
125
+ サシスセソ
126
+
127
+ タチツテト
128
+
129
+ ナニヌネノ
130
+
131
+ ハヒフヘホ
132
+
133
+ マミムメモ
134
+
135
+ ヤユヨ
136
+
137
+ ラリルレロ
138
+
139
+ ワヰヱヲ
140
+
141
+
142
+
143
+
144
+
145
+ `濁音`
146
+
147
+ ガギグゲゴ
148
+
149
+ ザジズゼゾ
150
+
151
+ ダヂヅデド
152
+
153
+ バビブベボ
154
+
155
+
156
+
157
+
158
+
159
+ `半濁音`
160
+
161
+ パピプペポ
162
+
163
+
164
+
165
+ `その他`
166
+
167
+
168
+
169
+
170
+
171
+ ァィゥェォ
172
+
173
+ ヵヶッ
174
+
175
+ ャュョ
176
+
177
+
178
+
179
+
180
+
181
+ ---
182
+
183
+ `以下は漢字で変換できるためカタカナとは認めない。(漢字とするかカタカナとするか悩ましい)`
184
+
185
+ ヵヶ
186
+
187
+
188
+
189
+
190
+
191
+
192
+
193
+ ## スペースの取り扱い
194
+
195
+ * 文頭の全角及び半角スペースは許容しない。
196
+
197
+ * 文末の全角及び半角スペースは許容しない。
198
+
199
+ * 文中の全角及び半角スペースは2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
200
+
201
+
202
+
203
+ ※以下に例を示すが、全角スペースも同様の扱いとする。
204
+
205
+
206
+
207
+ |テスト文字列 |期待値 |
208
+
209
+ |---|---|
210
+
211
+ |`漢字 カタカナ` | OK |
212
+
213
+ |`漢字 カタカナ` | NG |
214
+
215
+ |`漢字 カ タカナ` | OK |
216
+
217
+ |`漢字 カ タカナ` | NG |
218
+
219
+ |`漢 字 カ タ カ ナ` | OK |
220
+
221
+ |`漢 字 カ タ カ ナ` | NG |
222
+
223
+
224
+
225
+
226
+
227
+ ## 全角ハイフンの取り扱い
228
+
229
+ * 文中の全角ハイフンは2文字連続に限り許容しないが、1文字でづつであれば文中何度出現しても許容する。
230
+
231
+ * 全角ハイフンはカタカナとして表現できる文中にしか存在してはならず、カタカナの文頭には含んではならないが文末には含むことができる。
232
+
233
+
234
+
235
+ |テスト文字列 |期待値 |
236
+
237
+ |---|---|
238
+
239
+ |`漢ー字ギータ` | NG |
240
+
241
+ |`漢字ギータ` | OK |
242
+
243
+ |`漢字ギーター` | OK |
244
+
245
+ |`漢字ギーーター` | NG
246
+
247
+ |`漢字ギター` | OK |
248
+
249
+ |`漢字ーギター` | NG |
250
+
251
+ |`漢字ギータ` | OK |
252
+
253
+ |`ギーター漢ー字` | NG |
254
+
255
+ |`ギーター漢字` | OK |
256
+
257
+ |`ギーーター漢字` | NG
258
+
259
+ |`ギター漢字` | OK |
260
+
261
+ |`ーギター漢字` | NG |
262
+
263
+
264
+
265
+ ## 検証方法
266
+
267
+
268
+
269
+ カスタムルールとしてグローバルに使いまわしたいため、以下の形式のコードでtest関数を用いてチェックするものとする。
270
+
271
+
272
+
273
+ ```
274
+
275
+ const pattern = /^([ァ-ン一-龥][  ]?)*(((([ァ-ン]|ー)[  ]?)*([ァ-ン]|ー))|[一-龥])$/
276
+
277
+ console.log(pattern.test(value))
278
+
279
+
280
+
281
+ ```

1

ddd

2020/02/10 14:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -74,4 +74,4 @@
74
74
 
75
75
 
76
76
 
77
- 基本的な許容文字に加え、文字列の間にあるスペースは1つまでとしたいのです。
77
+ 基本的な許容文字形式に加え、文字列の間にあるスペースは1つまでとしたいのです。