- ベストアンサー
Javascriptの正規表現で変数を利用する方法
入力データの文字数をチェックする汎用JavaScript関数を作りたいのですが、正規表現の中で変数を利用する方法がわからなくて困っています。 すみませんが分かる方がいらっしゃいましたら教えてください。 よろしくお願いします。 //================================ //入力データチェック関数 checkfield //引数1 data 入力データ //引数2 number 文字数 //================================ function checkfield(data, i) { if(data.match(/^[0-9]{number}$/)!=-1){ alert('NG'); }else{ alerl('OK'); } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どうでしょうか? <HTML> <HEAD> <TITLE>ヘ(・、ヘ)ホイホイ(ノ、・)ノホイホイ</TITLE> <SCRIPT LANGUAGE=javascript> <!-- function button1_onclick() { stra = text1.value checkfield( stra , stra.length ) } //================================ //入力データチェック関数 checkfield //引数1 data 入力データ //引数2 number 文字数 //================================ function checkfield(data, number) { var re = new RegExp("^[0-9]{" + number + "}$"); if(data.match(re) == null ){ alert('NG'); }else{ alert('OK'); } } //--> </SCRIPT> </HEAD> <BODY> <P>例:入力データが数値なのか判断する</P> <P><INPUT id=text1 name=text1 ></P> <P><INPUT id=button1 type=button value=test name=button1 LANGUAGE=javascript onclick="return button1_onclick()"></P> </BODY> </HTML>
その他の回答 (1)
あまり利用頻度の高くないオブジェクトですが、正規表現オブジェクトを利用すると良いような気がします。 引数がnumberでよければ、ちょっと回りくどい書き方ですが、 function checkfield(data, i) { wrd="^[0-9]"+number; //正規表現で検索する文字列を変数に格納 chk= new RegExp(wrd,"");//変数wrdを検索する正規表現オブジェクト「chk」を作成 if(data.match(chk)!=-1){ alert('NG'); }else{ alerl('OK'); } } こんな感じに、正規表現オブジェクトを作成して、それをマッチングの対象にすれば、変数を正規表現に利用できるようになると思います。 正規表現にオプションをつけたい場合は、「new RegExp()」の第二引数に"g"などのように追加すれば、オプションもつけられます。 チェックしていないので、うまくいくかは少々自信なしですが… 参考になれば幸いです。
お礼
回答が遅くなってしまって申し訳ございません。 perl等と違い、正規表現を記述するためのオブジェクトというのがあるとは知らなかったので、とても助かりました。 はじめは正規表現オブジェクトの使い方に戸惑いましたが今では大分慣れ、オブジェクト故のメリットも分かるようになりました。 本当にありがとうございました。
お礼
お返事が遅くなってしまってすみません。 ittochan様の回答はとてもわかりやすく参考になりました。 ありがとうございました。 追伸: <TITLE>ヘ(・、ヘ)ホイホイ(ノ、・)ノホイホイ</TITLE> <-これ面白いですね。