全角カナ、半角カナ、全角スペース、半角スペースのみ入力できるように制限を掛けたく、str.match(/^[ァ-ンァ-ン゙゚ ]*$/)としたのですが、ヴを打つと引っかかってしまいます。
全角カナ、半角カナ、全角スペース、半角スペースのみ入力できる正規表現はどのように記述したらよいでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
回答7件
0
具体的にどの文字が対象になっているのか調べるために、一覧表を見ましょう。
さもなくば、[アイウエオカキクケコ...]のように、面倒でもすべて羅列したほうが良いかと思います。
#全角カナ
Unicode一覧 3000-3FFF - Wikipedia
https://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_3000-3FFF
一覧を見ると、ァ(\u30A1)~ン(\u30F3)とした場合、その次のヴ(\u30F4)が範囲に含まれないということがわかります。
さらに、その次に出てくるヵ(\u30F4)とヶ(\u30F5)も全角カナと言って差し支え無いでしょうから、ヴに加えてこの2つも含めるためには[ァ-ヶ]とします。
#半角カナ
全角と並びが違うので、注意して見る必要があります。
Unicode一覧 F000-FFFF - Wikipedia
https://ja.wikipedia.org/wiki/Unicode%E4%B8%80%E8%A6%A7_F000-FFFF
[ァ-ン゙゚]とした場合、ァ(\uFF67)の1つ前のヲ(\uFF66)が入っていません。実際には入力が想定される文字ではないのかもしれませんが、許可すらもしないのでしょうか?
また、一覧表を見ると、ァ(\uFF67)~ン(\uFF9D)の間にはー(\uFF70)が含まれています。全角では長音符を許可していないようですが、半角の場合は含んでも良いでしょうか?
どこまで厳密に扱うかによって色々と変わってきますので、要件に応じてご検討ください。
投稿2017/02/28 09:42
総合スコア849
0
チョット質問とはズレますが、、、
半角の長音記号と半角のマイナス記号は別物ですので気をつけて下さい。
半角カナの長音記号はFF70であり、半角減算記号(2212)や半角ハイフンマイナス(002D)では有りません。
長音記号などをカナとして捉えたい場合は半角長音記号だけでなく半角ハイフンマイナスなども受け入れてあげたほうが良いですよ。
投稿2017/02/28 22:34
総合スコア648
0
「引っかかる」「許容されない」という言葉はヴをマッチさせたい、させたくない、のどちらにもとれます。
また、編集履歴を見ると、マッチさせたくないように見えます。
なので正確なことはわかりませんが、文字の並びで言うとヴはンの後に有るので [ァ-ン] ではマッチしません。マッチさせたいなら [ァ-ヴ] またはもっと後ろまで [ァ-ヶ] のようにしてください。
投稿2017/02/28 09:08
編集2017/02/28 09:12総合スコア28675
0
ベストアンサー
全角カタカナの範囲は[ァ-ヶ]です。
また、半角カタカナはヲから始まっています。
しかもその後に半角用の濁点半濁点が続いているので[ヲ-゚]
空白文字を表す\sを付けて
/^[ァ-ヶヲ-゚\s]*$/
でどうでしょう。
文字コード表などで調べるといいですよ。
投稿2017/02/28 08:34
総合スコア47
0
ヴなどの型カナが打ててしまいます。
「ヴなどの半角カナが打ててしまう」ということが問題であるということでよろしいでしょうか?
基本的に半角カナの「ウ」と「゛」は別の文字です。したがって、濁点や半濁点の対象を限定したければ、二文字連続した形でマッチングする必要があるかと思います。たとえば、
javascript
1str = "ホヴホゲ"; 2if ( str.match(/^([ァ-ンァ-ン ]|[カ-トハ-ホ]゙|[ハ-ホ]゚)*$/)) { 3 console.log("ok"); 4} else { 5 console.log("ng"); 6}
とすれば、「ヴ」はng となります。
投稿2017/02/28 08:08
総合スコア3401
0
サンプルがあるので自由に組み合わせてみてください。
投稿2017/02/28 07:51
総合スコア2098
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。