• ベストアンサー

半角英数字の判別

お世話になります テキストフィールドにおいて半角英数字のチェックをしたいのですが・・・ 例えば『012ab』のような場合、 <script Language="JavaScript"> <!-- function checkText() { txt = document.myFORM.moto.value; if (txt.match(/[^a-z|^A-Z]/g)) alert("アルファベット以外が含まれてます"); } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkText()"> </form> では数字が入力されてるとalertされます function checkNum() { txt = document.myFORM.moto.value; for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { alert("数値以外が含まれてます"); return; } } } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkNum()"> </form> ではアルファベットがあるとalertされてしまいます この2つをどのように組み合わせれば半角英数字以外であればalertされるようになるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

質問者さんも#1の回答者さんも正規表現を間違っています。 /[^a-z|^A-Z]/g /[^a-z|^A-Z|^0-9]/g) ブラケット([])の中では '|' は or の意味を持ちませんし、 開きブラケットの直後以外の '^' はそのままキャラクタ自体の意味になります。 素直に[^a-zA-Z0-9] とすれば、お望みの組み合わせになります。

leap_day
質問者

お礼

回答ありがとうございます 正規表現は勉強していなかった為サンプルソースをそのままコピペさせていただいたのですが・・そうなのですか 確かに教えていただいたものでもできますね(^^) 『正規表現』で検索して幾つか見て回ったのですが AB|C|DE のように書かれて ABまたはCまたはDE のように書かれてあるところが幾つかあったのですがそれも間違いなのでしょうか? http://pzxa85.hp.infoseek.co.jp/www/wwwjsreg.htm

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

> AB|C|DE のように書かれて ABまたはCまたはDE のように書かれてあるところが幾つかあったのですがそれも間違いなのでしょうか? AB または C または DE というのが目的なら 間違っていません。 ブラケットの中で使ったときに「または」の 意味がなくなってしまうという話です。

leap_day
質問者

お礼

御礼が遅くなりました なるほど、ブラケット[ ]内でなければ | は「または」の意味で使えるのですね(^^) 色々勉強になりました。ありがとうございます

leap_day
質問者

補足

御三方とも使えるものをご教示して頂いたので悩んだのですが 一番勉強になったNo.2,4様に20P、シンプルなのをくださったNo.3様に10Pとします No.1様お答えいただいたのにすみませんm(--)m

noname#79209
noname#79209
回答No.3

/\W/ を使ってダメですか? 半角英数以外が一つでも入っていればワーニングを出したいなら、 あえて「g」オプションは不要のように思えますが...

leap_day
質問者

お礼

御礼が遅くなりました 確かにこれでもできますね(^^) 正規表現って色々な書き方があって奥が深いですね(><)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

function checkText() { txt = document.myFORM.moto.value; if (txt.match(/[^a-z|^A-Z|^0-9]/g)) alert("アルファベットと数字以外が含まれてます"); } とすればいいのではないでしょうか。

leap_day
質問者

お礼

回答ありがとうございます 正規表現はまったく勉強していなかったのでどのように扱って良いのか分からなかったのです(--;) なるほど、[ ] 内を変えてやればいいのですね(^^) 勉強になりましたm(--)m