JavaScriptで日付の正規表現の方法

このQ&Aのポイント
  • JavaScriptで日付の正規表現の方法について解説します。
  • 日付の正規表現を使って、特定の形式の日付が正しいかどうかをチェックするスクリプトを作りたい場合、どのように実装すれば良いかについて質問します。
  • 具体的には、YYYY/MM/DD hh:mm 形式の日付かどうかをチェックするスクリプトを作りたいという要望です。
回答を見る
  • ベストアンサー

JavaScriptで日付の正規表現の方法

お世話になっております。たびたびすみません。。 昨日、教わった正規表現の仕方(XX-XXXXXXX-XXXXX X=1-9)はよくわかったのですが、その方法を真似て 2004/02/02 12:00 みたいな日付が正しいかどうかチェックするスクリプトを考えてみたのですが、エラーがでてうまく動きません。 str=document.FORM.TEXT.value; if(str != ""){ if(! str.match(/^[0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}$/)){ window.alert("ERR"); document.FORM.TEXT.focus(); return(false); } } 形式は (YYYY/MM/DD hh:mm)です。 まったくわかりません・・・すみませんが、よろしくお願いいたします。

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

  • ベストアンサー
  • shidho
  • ベストアンサー率45% (138/303)
回答No.1

正規表現中の/はエスケープする必要があるかな。 \/とする必要があるはずです。 あと、日付としてあり得ない数字があるんですけど、 それはチェックしなくていいんですよね。 (たとえば、日は40以上の数字が現れることはないとか)

tomofriend
質問者

お礼

ありがとうございます!エスケープする必要があったんですね・・・¥記号をつけることにより、動作しました。また、ご意見ありがとうございました。検討してみます。

関連するQ&A

  • JavaScriptの正規表現について

    お世話になります。 HTMLでテキストに入力された数値のチェックを下記のようにJavaScriptで行っています。 ---------------------------------------------------------  function check_num(obj) {')   obj_w = document.form_name.elements[obj];')   if(obj_w.value.match(/^\d{0,1}(\.\d{1,3})?$/)){    return 0;   else{    alert("測定値は整数部分1桁、小数部分3桁までの正の数値を入力して下さい。")    obj_w.focus();    return 1;   }  } ----------------------------------------------------------- このとき、チェックする整数部分、小数部分の桁数を変数にして汎用性のある関数にしたいのですが、正規表現のなかで変数を使うにはどのようにしたらよいのでしょうか? よろしくお願い致します。

  • 入力された日付の正規表現の仕方を教えて下さい。

    こんばんは、いつもお世話になっております。 過去ログをあさってみたのですが、探し方が悪いのか 見つけられず…。 どうかご指導よろしくお願い申し上げます。 フォームに入力された値のチェックを、CGIに渡す前に ジャバスクリプトでもチェックしたいと思っています。 未入力や半角英数字以外のエラーチェックは出来たのですが yyyy/mm/dd形式で日付の入力をして欲しい時の チェックの書き方がわかりません。 私なりに色々と調べてみて、 if(myForm.day.value.match(/^[0-9]{4}\/[0-9]{2}\/[0-9]{2}$/)){ alert("日付は半角でyyyy/mm/dd形式でご記入下さい"); return false; } と記述してみたのですが、9999/99/99のような、ありえない 日付でも通ってしまいます。 そればらば、とおもい if(myForm.day.value.match(/^[2-3][0-9][0-9][0-9]\/[0-1][0-9]\/[0-3][0-9]$/)){ alert("日付は半角でyyyy/mm/dd形式でご記入下さい"); return false; } と書いてみたのですが、こちらはエラーが出ました(泣) どうか、ご指導よろしくお願い申し上げます。

  • javascriptでJIS第一/第二水準の文字をチェック

    javascriptの初心者です。 フォームのテキストボックスにJISの第一水準、第二水準以外の文字が入ったら エラーを返したく、いろいろ調べたら正規表現で   第一水準:[亜-腕]   第二水準:[弌-熙] と書かれているサイトを見つけて、以下のコードを作成しました。 function nameCheck() { var str = document.form1.name.value; if( str != "") { check = /[^亜-腕弌-熙]+/ if ( str.match(check) ) { alert("使用できない文字が含まれています。"); document.form1.name.focus(); } } } 実際にこれを実行すると、「崎の"大"の部分が"立"」になっている漢字は チェックできますが、「田」「山」と簡単な漢字がエラーとなってしまいます。 これではチェックが出来ないのでしょうか? どなたかご教授願えたらと思います。 どうぞよろしくお願いいたします。

  • 最新の日付を取得する方法。

    Excel2000にて 「YYYY/MM/DD HH:MM」で日付が入力されている列があります。 セルの型は標準です。 この列から1番最新のものを取得したいのですが MAXやMAXAを使っても上手く行きません…。 どなたかお知恵をお貸し下さいませm(__)m

  • 条件の値を他のページのテキストボックスから送る

    str = document.form.yy.value; if(str == 00){document.form.xx.style.visibility = "visible"; }else {document.form.xx.style.visibility = "hidden"; } と言う条件式があります。 上記の「00」の部分を別のページから変更することってできるのでしょうか? 例えば、別のページのテキストボックスに「01」と入力して、「送信ボタン」 とかをクリックすると、上記の(str == 00)の部分が(str == 01)になる ようにしたいのですが。。。 サンプルコードがあると助かります。よろしくお願いいたします。

  • javascript 要素取得

    htmlでチェックボックスを作り、その値をjavascriptで取得したいと思い、 下記のようなプログラムを書きました。 セレクトボックスから複数選択できるようにしたいのですが、 表示されるのは複数選んだ際に一番初めに選択したものだけです。  例) 「あああ」と「いいい」を選ぶと「あああ」のみ表示される。 しかし、これを「あああ.いいい」としたいのです。 できれば、 「あああ  いいい」 と改行できるといいです。 formの中にたくさんの項目があるため、 forのところがうまくいっていないのでしょうか? どなたかよろしくお願いします。 javascript側 function checkbox(){  var str="";  for(i=0;i<document.form1.elements.length;i++){   if(document.form1.elements[i].checked){     if(str != "") str = str + ".";     str = str + document.form1.document[i].value;   }  }  if(str == ""){   alert("入力してください");   return false;  }else{   document.form1.submit();  } } HTML側 <form action="<%=遷移先ページ%>" method="post" name="form1"> <select 複数> <input 複数> <input type="checkbox" name="document" value="・あああ"/>あああ <input type="checkbox" name="document" value="・いいい"/>いいい <input type="checkbox" name="document" value="・ううう"/>ううう <input type="submit" value="Submit" onclick="return checkbox();">

  • VBscriptで日付を数字8桁に設定する方法

    VBscript初心者です。 OCRの読取ソフトにvbscriptを入力しているのですが、 2021年3月3日を20210303に変換したいのですが 以下のスクリプトで設定しても変換できませんでした。 Dim yyyy,mm,dd dd=Mid(Me.Text,8,2) mm=Mid(Me.Text,6,2) yyyy=Left (Me.Text,4) Me.Text=yyyy+mm +dd ご教示いただけますと幸いです。 宜しくお願いいたします。

  • Excelで英語表示された日時の変換

    Excelで下記のようなテキストがあります。 (1) Jan 7 2013 8:22AM (2) Jul 30 2012 11:42AM これらを「yyyy/mm/dd HH:mm」で表示したいのですが、 どのような関数を利用したらよいでしょうか。 宜しくお願いします。

  • ASPの中のJavaScriptについて

    会社のASPプログラムの中で利用しているJavaScriptなんですが、 分からない部分があるので教えていただけないしょうか? var cForm = document.ImportItem;とあるのですが、ImportItemというのは、なんなんでしょうか? オブジェクト+ImportItemということはメソッドということになるのでしょうか? それともどこかで宣言させている何かでしょうか? これだけでは分からないと思いますが宜しくお願いします。 ItemCSVも同じようにメソッドなんでしょうか? function CheckForm(flg) { if (flg == 1 || flg == 2) { var cForm = document.ImportItem; if (cForm.ItemCSV.value != "") { var str = cForm.ItemCSV.value; var len = str.length; str = str.toLowerCase(); var pos1 = str.lastIndexOf(".csv"); if ((pos1 + 4 != len)) { alert("ファイルは[csv]を選択して下さい"); cForm.ItemCSV.focus(); return false; } }else{ alert("ファイルは[csv]を選択して下さい"); cForm.ItemCSV.focus(); return false; } } with (document.ImportItem) { action = "SubmitImportItem.asp?Flag=" + flg; submit(); } }

  • parseIntでうまく値がとれない

    初歩的な質問になってしまうかもしれませんがよろしくおねがいします。 日付が正しく入っているか確認するようにしたいのですがうまくいきません。 正しく入っているか確認する関数はもう用意してあります。 ※jsIsDate(yyyy,mm,dd)というのがその関数です。  引数に年 月 日をいれるものになります。 そこで私は「2003/09/12」という形でテキストボックスに入力されたデータから、 「2003」「9」「12」という値を取得して、 上のjsIsDate関数の引数に入れようと思いました。 しかし、2003と12はうまく入ったのですが、月の「09」が「9」ではなく「0」と取れてしまうのです。 parseIntの使い方が間違っているのでしょうか? そもそも値の取得の仕方が間違ってるのでしょうか? なにかヒントをいただけるとうれしいです。 よろしくおねがいします。 dt = form1.txtOpenday.value.split("/"); if(!jsIsDate(parseInt(dt[0]),parseInt(dt[1]),parseInt(dt[2]))){  alert("存在しない日付が入力されています。");  form1.txtOpenday.focus();  return; } txtOpenday...テキストボックスの名前です。

専門家に質問してみよう