重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!goo新規会員登録

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


PHPで、ウェブサービスをUTF-8で構築中です。入力項目のうち、1項目を半角英数(0-9、a-z、A-Z)と全角文字の利用を許可したいと考えています。

正規表現を使って判断しようとし、検索して調べてました。しかし、半角英数のみとか、全角文字のみで構成されている場合、という例は見つかるのですが、半角英数と全角文字の複合のみをチェックする方法がわからずにおります。

この
・半角英数、または全角文字で構成されている
という条件をチェックする記述方法を教えてください。


今回除外したいのは、半角の記号(0-9、a-z、A-Z以外の半角文字)ですので、
・半角の記号が含まれている
という条件をチェックする記述方法でもかまいません。

また、正規表現でなくても実現できるのであれば、正規表現にこだわる必要もありません。
よろしくお願いいたします。

A 回答 (1件)

なんとも言えませんが、こんな感じ?



<?php
$str="^aA#zZ!あ漢$";
$pattern="/[^ -\/:-@\[-`{-~]/u";
preg_match_all($pattern,$str,$match);
print_r($match);
?>

スペースとかタブとか特殊文字どうするのかもいまいち疑問

この回答への補足

>なんとも言えませんが、こんな感じ?

説明が足りませんでしたね、申し訳ありません。
ここではニックネームを入力してもらい、半角英数(0-9、a-z、A-Z)と全角文字のみで構成されていればOK、そのほかの文字が入っていたらNGという判定をしたいのです。

 ・半角英数のみ、全角のみ、半角英数、全角の混合、いずれもOKです

NG後の処理は別途書きますので、OKかNGかを判別できれば、と思います。

スペースはこの処理の前に削除していますので、特に必要はないのですが、このような文字も一括で省けるのであれば、一緒に処理したいと思います(というか、$patternにスペースも含まれているのですね)。

ご呈示していただいたサンプルですと、$matchに配列で1文字ずつ入力されているように思います。
上記のようにOKなのかNGなのかを判断するのは、$strと$matchの配列の文字をつなげて比べてみる、という方法を取る、ということでしょうか?

補足日時:2010/10/04 15:17
    • good
    • 0
この回答へのお礼

yambejp様

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

お礼日時:2010/10/05 11:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!