• ベストアンサー

入力文字数で条件分岐

buffalomasaの回答

回答No.4

>すみません。もうひとつ質問なのですが、 >「$name」に半角英数以外の文字が入力されていた場合 >処理1を行うにはどうすればいいのでしょう? > >if(????){ >処理1; >} > >よろしくお願いします。 半角があっても全角があっても同じです。 $oneByte = '[\x00-\x7F\xA1-\xDF]'; $twoBytes = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; $sjis = "(?:$oneByte|$twoBytes)"; @c = $name =~ /($sjis)/g; $mojisu = scalar(@c); if ($mojisu <= 4) { 処理1; }

if_else
質問者

補足

すみません。 修正してみましたができません! 全角で入力しても処理1が実行されませんでした。 僕が間違えてるのでしょうか? お手数をおかけして申し訳ないm(_ _)m

関連するQ&A

  • cgiによる文字入力数の制限について

    perlについては素人な者ですが、私の質問をお願いします。 フリーの掲示板cgiを使っていますが、IDネームを決定する際に入力できる文字数の制限がありません。 「未入力」と「全角」を含む場合は、以下の部分でエラーを出せますが、 if ($in{'name'} eq "" || $in{'name'} =~ /[^a-zA-Z0-9]/) { &error("IDネームを確認してください。");} この箇所に書き加えて、4文字から10文字以内といった文字入力数の制限を加えるにはどうしたらよいのでしょうか? cgiは携帯用なのでJavaScriptは使わない方法で何かあればお願い致します。

    • ベストアンサー
    • CGI
  • 入力文字のバイト数

    いつも参考にしております。 入力文字のバイト数のカウントについて質問をさせていただきます。 入力フォームなどで、入力文字数の制限をしたいと考えております。 文字を入力するたびに、バイト数がテキストボックスに常に 表示されるようにしたいと考えております。 以下を参考にできるのではないとか思っておりますが。 <script language="javascript"> <!-- function check() {  txt = document.myFORM.myTEXT.value;  n = txt.length;  if (n > 10) alert("10文字以内にしてください"); } --> </script> <form name="myFORM"> <textarea rows="3" name="myTEXT" onChange="check()"></textarea> </form> ご教授お願いいたします。

  • 入力文字数がでません。

    C++です。以下を実行したのですが、実行結果に改行数は出るが文字数がでません。お願いします。 #include <iostream.h> int main(void) { char c; int ccount = 0; int ncount = 0; while (cin.get(c)) { ccount++; if (c == '\n') ncount++; } cout << "文字数=" << ccount << '\n'; cout << "改行数=" << ncount << '\n'; return (0); }

  • 文字列で条件分岐 if swtich

    C言語でifやswitch文の条件式でキーボード入力からの複数文字列(char型)に対して条件分岐をしたいのですが、どなたか具体例を教えていただけないでしょうか?またscanfでキーボード入力を読み込む場合、Enterを押さないと実行されませんが、Enterを押さないでもいい関数や方法があれば教えて下さい。宜しくお願いします。

  • 行頭の文字によって条件分岐させる方法はありますか?

    秀丸エディタを使っています。 行頭の文字によって条件分岐させるマクロを作りたいのですが、どのようにすればいいのでしょうか? 例えば次のような文章の場合に 「 前 回答が寄せられるよう 次 以下を参考に 後 わかりやすく入力してください。 」 行頭の「前」、「次」「後」の文字を目印に、その行に特定の処理を行いたいというものです。 特定の処理の例として、 「 「前」に対しては続く文字を消去 「次」に対しては「後」の行の文字をコピー 「後」に対しては「前」の行の消去前の文字をコピー 」 という風に設定し、 「    わかりやすく入力してください。  回答が寄せられるよう 」 というようになる処理を行いたいと思います。 どういうやり方があるのでしょうか? あるいは if(行頭の文字==前){処理}という風にif文を使って条件を分岐させるとしたら、「行頭の文字」はどう表現したら良いか教えてください。

  • 条件分岐

    以下の条件分岐について教えてください。 条件:str の 文字に ”0.0”や”0000”などの入力があっ   た場合、NG_FLAGを返したいのです。 どこがいけないのか、教えてください。 int CheckData2(char *str) {  if (str[0] == '0');{   printf("%c", str[0]);   if (str[0] == '0' && str[1] == '.'){    puts("CheckData2はOK_FLAG");    return OK_FLAG;   } else if (str[0] == '0' && str[1] == '.'){    puts("CheckData2はNG_FLAG;");   return NG_FLAG; } } puts("CheckData2はOK_FLAG"); return OK_FLAG; }

  • 入力規則の文字数設定について

    入力規則の文字数設定がうまくいきません。 ご存知の方教えて下さい。 入力規則とIF関数で以下に設定したいのです。。 理論 セルAが0~7文字以下 真の値 セルBが0~9文字入力可 偽の値 セルBが0文字まで入力可=入力不可 偽の値はうまくいくのですが、真の値でセルBに9文字以上入れることが出来てしまいます。 私のセルBの設定は 入力規則  設定   入力値の種類ー文字列(長さ指定)   データー次の値の間   最小値ー0   最大値ー=IF(LEN(セルA)>=7,9,0) です。 よろしくお願い致します。

  • バイト数の入力制限の記述の仕方。

    こんにちわ。いつもお世話になっています。 もし、フォームに入力された。バイト数が5以下だったらAという処理。バイト数が6以上だったらBというしょりへ。。という記述をしたいのですが、文字数制限の記述のしかたがわかりません。数字限定だったら if($name < 5){'Aの処理'}というふうにできると思うのですが、アルファベットのときはこれはできないと思うんですね・・・文字数(バイト数)の制限ってどのようにかけばいいのですか?教えてください。

    • ベストアンサー
    • Perl
  • UTF-8での入力文字数について

    少し一般的な質問ですが、よろしくお願いいたします。 UTF-8でコードを書いているのですが、フォームからの入力文字数のチェックのところで、どうするべきか迷っています。 フォームからの文字数の制限は、「全角10文字・半角20文字以下」のようにするのが一般的かと思いますが、UTF-8の場合、皆さんはどのような文字数の制限にされているのでしょうか? 「全角10文字、半角30文字以下」 もしくは 「10文字以下」のように指定しているのでしょうか? ご意見、アドバイス等、お願いいたします。

  • 条件分岐

    Windows2000 access2000 毎月Excelで材料費を以下のように入力しています。 店番号、日付、金額 000001,2006/07/01,1000 000001,2006/07/02,1450 000001,2006/07/03,2000 このシートを翌月にaccessにインポートします。 インポートを指示するためのフォームを作成し、店、年、月を指定して実行ボタンでインポートを行うようにしました。 このとき月の日数にあわせてインポートするシートの範囲を指定するため以下のような条件分岐にしました。 If Me!月 = "02" Then DoCmd.TransferSpreadsheet acImport, 8, "材料費", fname01, True, "材料!a2:c30" ElseIf Me!月 = "04" Or "06" Or "09" Or "11" Then DoCmd.TransferSpreadsheet acImport, 8, "材料費", fname01, True, "材料!a2:c32" Else DoCmd.TransferSpreadsheet acImport, 8, "材料費", fname01, True, "材料!a2:c33" End If ところが上2つの条件では正常にインポートされるのですが、3番目の条件でインポートを指示しても2番目の条件でインポートされてしまいます。順番を入れ替えても同じ結果になりました。 何がいけないのでしょうか。 よろしくお願いします。