• ベストアンサー

半角英数字の判別

お世話になります テキストフィールドにおいて半角英数字のチェックをしたいのですが・・・ 例えば『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

関連するQ&A

  • 同じnameのhiddenで別々の内容のvalueを送りたい

    同じnameのhiddenで別々の内容のvalueを送りたい <form action="" name="MyForm" method="post"> <input type="hidden" name="rm" value="×××.txt">テスト1 <input type="button" value="閲 覧" onClick="MyForm.action='rm.cgi';MyForm.submit();"> <input type="button" value="削 除" onClick="MyForm.action='delete.cgi';MyForm.submit();"> <input type="hidden" name="rm" value="○○○.txt">テスト2 <input type="button" value="閲 覧" onClick="MyForm.action='rm.cgi';MyForm.submit();"> <input type="button" value="削 除" onClick="MyForm.action='delete.cgi';MyForm.submit();"> <input type="hidden" name="rm" value="△△△.txt">テスト3 <input type="button" value="閲 覧" onClick="MyForm.action='rm.cgi';MyForm.submit();"> <input type="button" value="削 除" onClick="MyForm.action='delete.cgi';MyForm.submit();"> 別のcgiでform送信すると、txtファイルが生成され、上記の繰り返しの部分に追加されていく様なイメージです。 閲覧・削除ボタンを押すと直前のhiddenを送信したいのですが、現状では一番最初のhiddenが送信されてしまいます。 方法がわかる方いらっしゃいましたら、御回答お願い致します。

    • ベストアンサー
    • HTML
  • ループで連続したフォームの値を読み込む

    こんにちは ループで苦労しています。 nameが数字で連続したフォームがいくつかあり、それをループで読み取りたいのです。私が作ったものは以下のものです。でもエラーになります。どこが悪いのかどなたかご教授ください。 <script> function ggo(){ for (i=1; i<=3; i++){ document.write(document.forms["myFORM"].elements["k"+i].value); }} </script> <form name="myForm"> <input type="text" name="k0"><br> <input type="text" name="k1"><br> <input type="text" name="k2"><br> <input type="button" value="hai" onClick="ggo()"> </form> それから、余談ですが以下のスクリプトはループを1回にするとkipをエラー無しで読み込んでくれますが、2回以上にするとエラー表示とともに1度しか読み込んでくれませんなぜなのでしょうか?ひとつの書き込みにに1つの質問が原則なのでこちらの質問に答えていただける方がいらっしゃればそれもとてもありがたいです。欲張ってすいません。 <script> function ggo(){ for (i=0; i<=2; i++){ document.write(document.myForm.kip.value); } } </script> <form name="myForm"> <input type="text" name="kip"><br> <input type="button" value="hai" onClick="ggo()"> </form> ↓参照しました↓ http://oshiete1.goo.ne.jp/qa820843.html

  • フォームの動作についてお願いします!

    <FORM NAME="form1"> <INPUT NAME="text1" TYPE="text"> <INPUT TYPE="button" value="表示" onclick="daialog()"> </FORM> <script language="JavaScript"> <!-- function daialog(){  alert(form1.text1.value) ; } --> </script> ----------------------------------- と上のようにテキストボックスの中身をアラートで返すスクリプトが あるのですが、検索ページ(google等)のようにボタンを押さずとも、 エンターキーを押せばdaialog()が呼びだされるようにするには どうすればいいでしょうか。。。 <FORM>に関係がありそうなのでJavaScriptのカテゴリにじゃないかも しれませんが、どなたかよろしくお願いします!!

  • イベントハンドラメソッドに関して教えてください

    お世話になります。イベントハンドラメソッドについて教えてください。 -----JS----- function f() { window.alert("Click"); } ---(1) document.myform.mybtn2 = function(){ ---(2) window.alert("Click"); } -----HTML----- <form id="myform" name="myform"> <input type="button" id="mybtn1" name="mybtn1" value="Click" onclick="f()" /> ---(1) <input type="button" id="mybtn2" name="mybtn2" value="Click" /> ---(2) </form> Q:上記のコードで(1)の場合だと正常にalert画面が出ますが、(2)の場合だと何も起こりません。 FirefoxのJavaScriptコンソールで調べると下記のエラーが表示されます。 documnet.myform has no propaties なぜエラーが発生するのか分からずに困っています。 解決の手がかりでもよいので教えてください。

  • formでPOSTするのと同じ動作をボタンとjavascriptで実現したいのですが

    <form name="myFORM" method="POST" action="xxx.php"> <input type="text" name="NAME"> <input type="submit" value="送信"> </form> 上記と同じ動作を <button onclick="fpost('tanaka','POST','xxx.php')">送信</button> とjavascriptで実現したいのですが可能でしょうか? 可能でしたらどのようなスクリプトになりますでしょうか? document.myFORM.submit();とかではなく、formタグを全く使わずPOSTしページ遷移したいのですが。 XMLHttpRequestとlocation.replace()とかでできるのでしょうか?? すみませんがよろしくお願い致します。

  • コントロール名の取得方法について

    いつもお世話になっております。 表題の件について早速ご質問なのですが、 例えば・・・ <form name="a"> <input type="text" name="txt01" value="no...1"> <input type="text" name="txt02" value="number2"> <input type="text" name="txt03" value="sono3"> <input type="text" name="txt04" value="その4"> <input type="text" name="txt05" value="これは5番目"> <input type="button" onClick="getControlValue(document.a)"> </form> というフォームがあったとして JavaScriptから <script type="text/JavaScript"> function getControlValue(oForm) { for (i=1;i<=5;i++) { oControlName = i番目のコントロール; // 数字の2桁0埋め処理を使用 alert(oControlName.Name + "の値は" + oControlName.value + "です。"); } return false; } </script> というループの中で上記フォーム(txt**)のコントロールを取得して、その値を取得するには どのような方法を取れば実現できるのでしょうか。 ご存知の方がいらっしゃいましたらお知恵をお借りできれば幸いに存じます。 よろしくおねがいいたします。

  • alert閉じた時、htmlに文章を追加表示したい

    下記プログラムは、自分の勉強用で作ったものですが、 解答ボタンを押して正解し、alertウィンドウを閉じた瞬間に 説明文のsm1,sm2,sm3をhtml上に追加表示するには どこをどう直したらいいのでしょうか? よろしくお願いいたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <script language="JavaScript"> <!-- var sm1; var sm2; var sm3; function kaitou1(){ if(document.myForm.ans1.value == "number"){ alert("正解です"); sm1 = "number型とは~"; }else{ alert("違います"); } } function kaitou2(){ if(document.myForm.ans2.value == "string"){ alert("正解です"); sm2 = "string型とは~"; }else{ alert("違います"); } } function kaitou3(){ if(document.myForm.ans3.value == "boolean"){ alert("正解です"); sm3 = "boolean型とは~"; }else{ alert("違います"); } } //--> </script> </head> <body> <p style="width:330px; padding:5px; background-color:#ddd">変数の基本的なデータ型には3つあります。<br> それら3つは何でしょう?<br> 下記○○に半角英数字で入力して下さい。</p> <form name="myForm"> <p>数値を表す○○型 ⇒  <input type="text" size="20" name="ans1"> <input type="button" value="解答" onclick="kaitou1()"> </p> <p>文字列を表す○○型 ⇒  <input type="text" size="20" name="ans2"> <input type="button" value="解答" onclick="kaitou2()"> </p> <p>真偽を表す○○型 ⇒  <input type="text" size="20" name="ans3"> <input type="button" value="解答" onclick="kaitou3()"> </p> </form> <script language="JavaScript"> <!-- document.write("<p>"+sm1+"</p>"); document.write("<p>"+sm2+"</p>"); document.write("<p>"+sm3+"</p>"); //--> </script> </body> </html>

  • fileUploadオブジェクトへの値の代入 (困っています。教えてください。m(__)m)

    こんばんは。 fileUploadオブジェクトへの値の代入がどうにもこうにもできません。 いったいどうしたらいいのでしょうか?どうか助けてください。 よろしくお願いいたします。m(__)m -- <HTML><BODY> <FORM NAME="myFormF"> <INPUT TYPE="file" NAME="myFile"> <INPUT TYPE="button" value="set FILEFILE -> file" onClick="document.myFormF.myFile.value='FILEFILE'"> <INPUT TYPE="submit" onClick="alert(document.myFormF.myFile.value)"> </FORM> <FORM NAME="myFormT"> <INPUT TYPE="text" NAME="myText"> <INPUT TYPE="button" value="set TEXTTEXT -> text" onClick="document.myFormT.myText.value='TEXTTEXT'"> <INPUT TYPE="submit" onClick="alert(document.myFormT.myText.value)"> </FORM> </BODY></HTML> -- key: fileUpload object,ファイルアップロードオブジェクト,WSH,javascript

  • JavaScript for文の処理

    JavaScriptでクイズの採点をしたいと思っています。 ↓のスクリプトを書いたのですが 「ページでエラーが発生しました」 という表示がステータスバーにでます。 二問とも一番下の選択肢を選んだ場合 「2点です」とアラートに表示させたいのですがどうしても、うまくいきません。 おそらくfor文内の score + document.myFORM.elements[i].value; このへんがおかしいのだと思うのですが。 どなたか修正方法をお願いします。 <HTML> <HEAD> <script Language="JavaScript"><!-- function GetScore(){ score = 0; for (i=0; i<6; i++) if (document.myFORM.elements[i].checked) score + document.myFORM.elements[i].value; alert(score+"点です"); // --></script> </HEAD> <BODY> <FORM name="myFORM">第一問:あなたは? <BR> <INPUT TYPE="RADIO" NAME="q1" ID="r1"VALUE="0"> <LABEL FOR="r1">引きこもり</LABEL> <BR> <INPUT TYPE="RADIO" NAME="q1" ID="r2" VALUE="1"><LABEL FOR="r2">立てこもり</LABEL> <BR> <INPUT TYPE="RADIO" NAME="q1" ID="r3" VALUE="1"><LABEL FOR="r3">生き残り</LABEL> <BR><BR> 第二問:あなたは? <BR> <INPUT TYPE="RADIO" NAME="q2" ID="r2_1" VALUE="0"><LABEL FOR="r2_1">引きこもり</LABEL> <BR> <INPUT TYPE="RADIO" NAME="q2" ID="r2_2" VALUE="0"><LABEL FOR="r2_2">立てこもり</LABEL> <BR> <INPUT TYPE="RADIO" NAME="q2" ID="r2_3" VALUE="1"><LABEL FOR="r2_3">オタク</LABEL> <BR><BR> <input type="button" value="採点する" onClick="GetScore()"> </FORM> </BODY></HTML>

  • javascriptで電卓を作成

    プログラミングをまったくやったことがない状態から、ドットインストールやテックアカデミーのHTML,CSS,Javascriptの入門動画をすべて見終わった段階ですので、 基本的な仕組みと関数やfor文、if文、while文、などについてくらいは理解しています。 今回、javascriptを使って電卓のシステムを組む、という課題があり、 ネットで検索してやってみてはいるのですが行き詰っています。 最初は以下のような形で作成をしていました。 <body> <form name="myform">  <table border="1"> <tr> <td colspan="4"> <input type="text" name="result" value="" id="result"> </td> </tr> <tr> <td><input type="button" value=" "onclick="calc(' ')" ></td> <td><input type="button" value="%"onclick="calc('%')"></td> <td colspan="2"> <input type="button" value="AC" onclick="calc('AC')"></td> </tr> <tr> <td><input type="button" value="7" onclick="calc('7')"></td> <td><input type="button" value="8" onclick="calc('8')"></td> <td><input type="button" value="9" onclick="calc('9')"></td> <td><input type="button" value="÷" onclick="calc('÷')"></td> </tr> <tr> <td><input type="button" value="4"onclick="calc('4')" ></td> <td><input type="button" value="5"onclick="calc('5')" ></td> <td><input type="button" value="6"onclick="calc('6')"></td> <td><input type="button" value="×" onclick="calc('×')"></td> </tr>   <tr> <td><input type="button" value="1" onclick="calc('1')" ></td> <td><input type="button" value="2" onclick="calc('2')"></td> <td><input type="button" value="3" onclick="calc('3')"></td> <td><input type="button" value="-" onclick="calc('-')"></td> </tr> <tr> <td><input type="button" value="0" onclick="calc('0')" ></td> <td><input type="button" value="+" onclick="calc('+')"></td> <td colspan="2"> <input type="button" value="=" onclick="calc('=')"></td> </tr> </form> <script> function calc(a) { if (a === "=") { document.myform.kekka.value = eval(document.myform.kekka.value); } else if (a === "AC") { document.myform.kekka.value = ""; } else { document.myform.kekka.value += a; } </script> </body> </html> ですが、onclickとevalを使わず、代わりに「addEventListner」を用いるよう指示されました。 「addEventListner」に関しては、検索してなんとかざっと理解したのですが、それ以前に、電卓の基本的な関数の組み方を理解していないため、いまいちどこから手をつけたらいいかわかりません。 いろんなサイトを見ているといろんなやり方がでてきますが、ope=+,やflag=0などの表記をよく見かけます。が、この意味もいまいちわかっていません。。 初心者すぎるので、何かアドバイスをいただけますと幸いです。 宜しくお願いいたします。 また、このような初心者が使いこなせるようになるために向いている動画や書籍、ページがありましたら教えていただけますと助かります。

専門家に質問してみよう