• 締切済み

正規表現の入力チェック

正規表現の入力を拒否するJavaScriptを作成したいのですが、match処理ではうまくいきませんでした。ネットでも調べたのですがなかなか参考になるものがありませんでした。どなたかご存知のかたがいらっしゃいましたら、ご教授ください。

みんなの回答

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

ちょっと質問が難解なんですが、入力された文字列が正規表現として妥当なものならNGとしたいのでしょうか? それとも正規表現を用いて何かをNGとしたいのでしょうか? 前者なら正規表現は多彩な書き方が出来るので逆に何をOKとしたいのかわからないと難しいし、なにより正規表現として扱われる関数で扱わなければよさそうだし、後者なら何をNGにしたいのかわからなければ回答のしようがありません。 一応、正規表現に関する参考URLを貼っておきます。

参考URL:
http://www.tohoho-web.com/js/regexp.htm
PINK_EGG
質問者

補足

補足させていただきます。質問が不明確で申し訳ありません。質問内容は前者のほうになります。具体的な内容としますと、正規表現を含んだ入力を許可すると、それを再表示した場合にスクリプトエラーが発生してしまうという現象がおこってしまいます。それを回避したいと考えています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 正規表現を使って入力チェックを行う

    JavaScriptで正規表現を用いて半角英数入力チェックを行いたいのですが、うまくいきません。 ご協力お願いします。 --【1】------------------------------------------------- if((element2.value.match(/^[^0-9a-zA-Z]$/)){  document.FORM01.in_AAA.value="";  return false; } ------------------------------------------------------- 【1】では、半角、全角に関わらず正常に処理が行われます。 --【2】------------------------------------------------- if(!element2.value.match(/^[^0-9a-zA-Z]$/)){   document.FORM01.in_AAA.value="";   return false; } ------------------------------------------------------- 【2】にすると、半角、全角ともエラーとなってしまいます。 どのようにすれば、実装できるのでしょうか。 皆さん、よろしくお願いします。

  • 正規表現

    正規表現について勉強中です。 先頭2文字をたとえばYQで入力させたい場合は どうマッチさせればよいのでしょうか? if string.match(/^YQ|[0-9]/) == null { nullの場合の処理 } としていますが、うまくいきません。 正規表現についてはまったくの初心者ですので、 笑わないでくださいね。

  • メルアドをチェックする正規表現?

    こんにちは,よろしくお願いします。JavaScriptでメルアドをチェックしようと次のような文字列を,patternという変数に代入して, var pattern = "^[a-z0-9\-_.]+@[a-z\-]+(\.[a-z\-]+)*com|net|org|edu|gov|mil|int|info|biz|name|pro|museum|aero|coop|[a-z][a-z]$"; 次のようにチェックしたのですが, if(mail.match(pattern)){・・・ "aa"など,2つ以上の小文字のアルファベット文字列にマッチしてしまいます。つまり,@が入っていなくてもマッチしてしまいます。実は,正規表現の解説書を見てこのような文字列としたのですが,JavaScriptでは不都合な点があるのでしょうか?ご存知の方がいらっしゃいましたら,ご教授ください。よろしくお願いします。

  • 正規表現によるチェック

    wikiのような掲示板のサイトを作っているのですが、 フォームへの入力値をチェックするところで、困っています。 正規表現を使えばよさそうなのですが、正規表現がよく理解できていないので、申し訳ないのですが、教えてください。 フォームへの入力が #ref(ファイル名1) #ref(ファイル名2) .... という形式に合致しているかをjavascriptでチェックし、合致しない場合はエラーを出したいと考えています。 ここで、ファイル名は 18桁の数字+拡張子 (jpg、pjpeg、gif、png、x-png) から成ります。 以上、すみませんが、ご教授の程よろしくお願いいたします。

  • javascriptでの正規表現について

    javascript正規表現にて正の整数および小数(半角のみ) を判別したいのですがうまくいきません。どうすればいいのでしょうか。<script language=javascript> function StrCheck(strSrc){ var value = strSrc.value; if (value.match(/[0-999]+¥.[0-99]/)==true){ alert("半角数字のみで入力して下さい"); } </script> ); 以上のようにつくってみましたが、半角でも全角でも「半角を入力してください」というメッセージがでてしまいます。これを全角のみでエラー表示がでるようにしたいのですがどうしたらよいのでしょうか。参考になるWEBページでもあれば教えてください。ご教授の程よろしくお願い申し上げます。

  • 正規表現での表し方について

    はじめまして。以下の正規表現を作成中ですが、上手くいきません。。 お力添えをお願い致します。 0.0~100.0の範囲にマッチする。 「マッチ」 00000 001 001.0 「アンマッチ」 -0.1 100.1 100. 1.0.0 .0 10.01 10.00 以上です。

  • 正規表現のチェックについてお聞きしたい事があります

    正規表現のチェックについてお聞きしたい事があります DBデータを修正するのにテキストボックスから数値を入力して int型で受け取り、SQLを投げる処理を作成しているのですが この入力された値が数値である事をチェックする場合 正規表現を使って、数値以外である場合にはねる方法か Try~catch文を使って数値以外である場合にはExceptoinを受け取って エラー処理を記述する方法か、どちらの方がより推奨されますか?

    • ベストアンサー
    • Java
  • 正規表現を使った入力値のチェック

    こんにちは、yukimura1024です。 perlでブラウザのフォームに入力された値をチェックしたいのですが、 入力された値が「全角文字のみか」と「全角カタカナのみか」 という2種類のチェックのしかたがわかりません。 「数値のみか」のチェックは正規表現を使ってできたのですが、 これと同じように正規表現を使って、この2つの全角チェックをする 方法はないでしょうか? 数値チェックは以下の方法でやっています↓ if ($str_txt_yuubin =~ /[^0-9]/) { print "「郵便番号」を半角数字で入力してください。<br>\n"; } ご存知の方がいましたら教えていただけると助かります。 よろしくお願い致します。

    • ベストアンサー
    • Perl
  • 正規表現/スペース以降改行までのグローバルマッチ

    JavaScript正規表現で、「スペース1つ」以降「改行」までのグローバルマッチを行いたいのですが、うまくいきません。 ■マッチさせたい内容 ・年末なのに ここをマッチさせたい ・正規表現が ここもマッチさせたい ・ ここもマッチさせたい ・ここはマッチさせたくない ・ここはマッチさせたくない ■うまくいかない正規表現 /\s{1}.*[\n\r]/g

  • 正規表現について

    正規表現について質問が有ります。 プログラミング初心者なので、根本的な間違い等も犯している可能性もありますがご了承下さい。 今、javascriptを使ってフォームに入力されたメールアドレスの入力チェックを行おうとしています。 とりあえずはwebを漁って見つけたソースでチェックできる様にはなったのですが、もうちょっと拡張したいと思った所、つまずいてしまいました。 元のソースは if (!this.value.match(/^[\x01-\x7F]+@((([-a-z0-9]+\.)*[a-z]+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))$/){ alert("error"); } という風にチェックをしており、 ******(@マークが無い) ***@(@の後半が無い) @***(@の前半が無い) などの基本的な形式に対してはチェックを行う様になっています。 しかし、hoge@hogeの様に書くと、適当に書いたドメインでもスルーしてしまいます。 そこで、ドメインのチェックも行おうとしているのですが、ここで詰まっています。 ちなみに今回は携帯のアドレスに限定してチェックを行おうと思っています。 javascriptでの正規表現について書いてあるページを見ながら下の様に書いたのですが上手く動作してくれません。 正規表現の書き方がおかしいのだろうとは思うのですが、どこがいけないのかよく分かりません。 if (!this.value.match(/^[\x01-\x7F]+@((([-a-z0-9]+\.)*[a-z]+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))$/) || /*ここから下を追加*/ (!this.value.match(/@(docomo|ezweb|softbank)\.ne\.jp$/) || !this.value.match(/@i\.softbank\.jp$/)){ alert("error"); } 最初はもとからある基本的な入力形式のチェックを行い、また@後のドメインが携帯のドメインでない場合にエラーを返す。というつもりで書きました。 ですが、***@docomo.ne.jpとしてもエラーが返って来てしまいます。 原因を教えていただけますか? また、もとからあった正規表現が何をどういう指定しているのかもキチンとは理解していないので、教えていただけるとうれしいです。 よろしくお願いします。