- 締切済み
JavaScriptでの全角カナ英数字チェック方法について
初心者で 簡単なことを質問してしまいまして 申し訳ございません。 全角カナ英数字+「ー」+「‐」のみ入力できるようにし、 それ以外が入力された場合は alertを出すようにしたいのですが、 チェックする方法としては 下記のとおりになりますでしょうか。 良い方法があれば教えてください。 (1)入力可能文字を宣言 アイウエオカキクケコ~ワヲン + 1234567890 + ABCDEFG~XYZ + abcdefg~xyz + ー + ‐ (2)入力された値を取得し charAt(i)で一文字ずつ比較 すべての全角文字ではなく 上記文字のみ入力可能としたいのです。 入力可能な文字を 長々と定義するのもと思いまして お伺いしております。 どうぞ宜しくお願い申し上げます。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
ん? JavaScriptではなく、JSPですか? 混同しているようなら明確な区別が必要です。 http://www.atmarkit.co.jp/fjava/rensai/jsp01/jsp01.html#ap02
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
#1です。 全角カナについてはもう少し厳密には[ァ-ヶ]となります。 http://webtips.open-log.net/?PHP%2FPHP%E5%85%A5%E9%96%80%2F%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%2F%E6%96%87%E5%AD%97%E3%82%AF%E3%83%A9%E3%82%B9 小さい字とか撥音等は含まない、と言う事でしたらそのまま書くべきです。 [アイウエオカキクケコ.......ン] 補足でした。
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
charAtを使うのではなく、正規表現を使った方が簡単です。 指定文字の文字クラスが使えます。文字クラスは[]で囲み、それ以外と言う場合は頭に^をつけます。 すなわち、正規表現的には /[^ア-ン0-9A-zー\-]/ となります。match()で正規表現で検索出来るので、該当した場合はtrueとなるので、こんな関数が書けます。 function checkWord(str){ var a = str.match(/[^ア-ン0-9A-zー\-]/); if(a){ alert( str+"は文字が不正です" ); } }
補足
遅くなりましてすみません。 ご回答ありがとうございます。 ご教示いただいた処理を埋め込んでみたのですが JSPのバージョンが古いため matchで オブジェクトでサポートされていないプロパティまたは メソッドです。 と出てしまいます。 matchが使用できない場合は やはり charAtで回すしかないのでしょうか。 最初にバージョンなどをお伝えできておらず 申し訳ございませんでした。 また、同様の処理をJavaにも埋め込みたいのですが 具体的にどう対応すれば よいのかわかっておりません。 Javaもバージョンが古く ループだらけになりそうです。 きれいな方法があれば お手数かと思いますが 宜しくお願いいたします。