全角カナ、半角カナ、全角スペース、半角スペースのみ入力できるように制限を掛けたく、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
「引っかかる」「許容されない」という言葉はヴをマッチさせたい、させたくない、のどちらにもとれます。
また、編集履歴を見ると、マッチさせたくないように見えます。
なので正確なことはわかりませんが、文字の並びで言うとヴはンの後に有るので [ァ-ン] ではマッチしません。マッチさせたいなら [ァ-ヴ] またはもっと後ろまで [ァ-ヶ] のようにしてください。
投稿2017/02/28 09:08
編集2017/02/28 09:12総合スコア28660
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
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
総合スコア2092
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。