• 締切済み

PHPで半角英数、全角文字の組み合わせを許可する正規表現の記述方法を教

PHPで半角英数、全角文字の組み合わせを許可する正規表現の記述方法を教えてください。 PHPで、ウェブサービスをUTF-8で構築中です。入力項目のうち、1項目を半角英数(0-9、a-z、A-Z)と全角文字の利用を許可したいと考えています。 正規表現を使って判断しようとし、検索して調べてました。しかし、半角英数のみとか、全角文字のみで構成されている場合、という例は見つかるのですが、半角英数と全角文字の複合のみをチェックする方法がわからずにおります。 この ・半角英数、または全角文字で構成されている という条件をチェックする記述方法を教えてください。 今回除外したいのは、半角の記号(0-9、a-z、A-Z以外の半角文字)ですので、 ・半角の記号が含まれている という条件をチェックする記述方法でもかまいません。 また、正規表現でなくても実現できるのであれば、正規表現にこだわる必要もありません。 よろしくお願いいたします。

  • PHP
  • 回答数1
  • ありがとう数2

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

なんとも言えませんが、こんな感じ? <?php $str="^aA#zZ!あ漢$"; $pattern="/[^ -\/:-@\[-`{-~]/u"; preg_match_all($pattern,$str,$match); print_r($match); ?> スペースとかタブとか特殊文字どうするのかもいまいち疑問

GonzoDX
質問者

お礼

yambejp様 ご教授いただいた方法で、チェックし、判別することができました。 ありがとうございます。

GonzoDX
質問者

補足

>なんとも言えませんが、こんな感じ? 説明が足りませんでしたね、申し訳ありません。 ここではニックネームを入力してもらい、半角英数(0-9、a-z、A-Z)と全角文字のみで構成されていればOK、そのほかの文字が入っていたらNGという判定をしたいのです。  ・半角英数のみ、全角のみ、半角英数、全角の混合、いずれもOKです NG後の処理は別途書きますので、OKかNGかを判別できれば、と思います。 スペースはこの処理の前に削除していますので、特に必要はないのですが、このような文字も一括で省けるのであれば、一緒に処理したいと思います(というか、$patternにスペースも含まれているのですね)。 ご呈示していただいたサンプルですと、$matchに配列で1文字ずつ入力されているように思います。 上記のようにOKなのかNGなのかを判断するのは、$strと$matchの配列の文字をつなげて比べてみる、という方法を取る、ということでしょうか?

関連するQ&A

  • FrexibleRenamerで【全角→半角】の正規表現は?

    FrexibleRenamerで【全角→半角】の正規表現は? FrexibeRenamerにあらかじめ用意されている【全角→半角】で変換したところ、 !#$%&’() _などの文字が変換されませんでした。 【全角→半角】は英数に限られているのでしょうか。 正規表現を使おうとしたのですが【全角→半角】の指定方法がわかりません。 これらの記号を【全角→半角】する方法を教えて頂けないでしょうか。 階層丸ごと全フォルダ名と全ファイル名を変更したいのでFrexibleRenamerを使いました

  • 英数半角文字と「-」を指定する正規表現

    英数半角文字と「-」を指定する正規表現が なかなか解りません。 ([a-z\-]+) ([a-z,-]+) いずれもエラーになります。 どなかたご存知のかた、ご教授下さい。

  • 正規表現で、全角文字を半角文字にする方法

    エディター等で使用できる、通常の正規表現で、例えば、全角文字を半角文字にする方法はありますでしょうか? ※つまり、PerlのtrやPHPのstrtrのようなことです。 例えば、正規表現対応のエディターで、サイト全体の全角英数字を半角英数字にするような処理をしたいのですが。

    • ベストアンサー
    • Perl
  • 半角英数文字を全角英数文字に変換する方法

    半角英数文字を全角英数文字に変換する方法ってありますか? どうしても半角カナのみならず、英数字まで全角に必要が出てきたんですが、何かいいてはありますでしょうか。 jcode.phpsは英数文字まで全角に出来ませんよね。 pgrep_replaceも使ってみたんですが、うまく引っ掛かりません。 PHP3とMySQLでEUC-JPを扱ってます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • [ASP]正規表現で半角英数記号を判定

    [ASP]正規表現で半角英数記号を判定 ASP(VBScript+HTML)で開発作業をしています。 画面から入力された値が「半角英数」のみで構成されていることを検査する為に、 以下の入力チェックを設けています。 set objre = new RegExp objre.pattern = "[^0-9a-zA-Z]" blnCheck = objre.test(sInput) '##sInputは入力値が入った変数 このblnCheckに格納された結果がtrueかfalseかで判定しています。 しかし、半角英数のみでなく、半角記号についても入力を許可することになりました。 上記の処理を「半角英数と半角記号で構成されているかどうか」に変更する為には どのように記述を変更すればいいのでしょうか。 ご存じの方がいらっしゃいましたら助言をいただけないでしょうか。 よろしくお願いします。

  • phpの正規表現について

    phpの正規表現についてです。 よく入力されたメール・パスワードを判定するのに正規表現で判定させますが、今回の指定する条件は… ・半角英数、0~9の組み合わせ ・使用禁止文字は \ ' @ [ ] の5つ ・入力は8文字以内 例 if(ereg("^[0-9a-z\!\"\#\$\%\&\(\)\=\-\~\|\{\}\;\:\+\*\,\.\/\<\>\?\_]{1,8}$", $pw)){ 記号の意味でよくわからないのがあるのですが、 { }は文字数を指定するものでよろしいのでしょうか? {1,8} は1~8文字までという意味? \が入ると認証が通ってしまってい、困っています。 ユーザーの入力    MySQLの取得結果 例 123\        → データが入らない   \123        → 123   \\123        → \123   123\123      → 123123   \\          → \ といった不具合になってしまい、MySQL側でも入力されたデータと異なったデータが入ってしまいます。\が入っても認証されないようにするにはどうすればいいんでしょうか? 正規表現の参考にしたサイトは http://itbtech.itboost.co.jp/php/php_06.php です。アドバイスよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 正規表現で特定の半角数字を全角にするのは?

    正規表現で特定の半角数字を全角にするのは? マイフェスで文書編集をしています。 特定の記号[◎]の後ろにある半角数字だけを全角数字にしたいのですが、 記述方法がよくわかりません。 よろしくお願いいたします。

  • 正規表現による文字列のチェックについて

    文字列の入力チェックで困っています。 入力された文字列が以下の文字のみで構成されているか、正規表現でチェックするにはどうすれば良いか教えてください。 できれば一発でチェックしたいです。 ・全角(漢字、ひらがな、かたかな)※英数字を含め、左記以外の全角は使用禁止 ・半角英数字 ・半角記号(「-」「.」「:」「*」「&」)※後から追加変更される可能性がある Java(UTF-8)とJavaScript(Shift-JIS)それぞれで対応できる方法をお願いいたします。

  • Java正規表現で全角記号

    Javaの正規表現 で「全角記号のみ」というのがどうしてもわかりません。 今Javaでプログラムを作っていてString name が nullの時と、全角記号半角記号スペースのみ、空文字の時に returnをnullにするif文を考えています。 しかし、半角記号と全角記号の正規表現がサッパリわかりません 。とくに全角記号が全くわかりません。 種類が多すぎてきりがないのです。 どうやって表現したらいいのでしょうか? [、-○]などがネットにはありましたが、エラーになります。 どうか教えてください! 追加の詳細が必要なときはコメントいただけましたら返信いたします。 よろしくお願いします。

  • 正規表現での空白文字チェックについて。

    VB2005環境です。 正規表現を用いて、以下の3パターンのチェックをしたいと 思っています。 A.半角のみカナ許可(半角スペースも許可) B.全角のみカナ許可(全角スペース許可) C.全角&半角カナのみ許可(スペース許可) Cのパターンは^[ァ-ヶ\uFF61-\uFF9F\s]+$のように 記述してみましたが、\sでは全角、半角問わずに スペースであればよしとしてしまうようで、A、Bの パターンが実現できません。 探してみた限り、半角全角スペースを区別する正規表現が 見つからなかったのですが、そのような表現がありましたら ご教授いただけないでしょうか?