WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:正規表現による文字数制限

0:[投稿] アブサミラノ [2002/04/22 17:33 ][環境:MAC+IE UNIX系+Perl]

フォームで「8文字以外の数字」を入れたら警告するように
したいのですが、上手く行きません。
(テキストエリアには、必ず「8文字の数字」を入力しなければ
いけないようにしたい)

if ($age =~ //) {
   print "Content-type: text/html\n\n";
   print <<HTML1;
   <HTML>
   <HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Shift_JIS">
   </HEAD>
   <BODY>
    8文字入れてください。
   </BODY>
   </HTML>
HTML1
   exit;
}

($age =~ //)
この部分に、どんな正規表現を入れたら良いでしょうか。
お分かりの方、宜しくお願いします。


1:[回答] ヨシミ [2002/04/22 17:35 ]

文字が数字でかつ8桁ってことですか?
\d\d\d\d\d\d\d\d


2:[回答] andi [2002/04/22 17:36 ]

lengthでは駄目なんですか?


3:[回答] andi [2002/04/22 17:37 ]

あ、数字ですか。ふむ。
length(int($age));
とか。


4:[回答] アブサミラノ [2002/04/22 17:51 ]

あ、すいません、8桁です。<ヨシミさん

unless($age =~ /\d\d\d\d\d\d\d\d/) {
  ・
  ・
  ・
}

これでできますね。


5:[回答] アブサミラノ [2002/04/22 18:01 ]

<length(int($age));
<とか。

あああ私の知識では「length」の使い方がよくわかりません
でした。手持ちの書籍には「length」はスカラーの長さを
調べる、とありましたが「8桁入力されているか調べる」という
事なんでしょうか?知識が乏しくすいません・・。


6:[回答] ふじ [URL] [2002/04/22 18:01 ]

> unless($age =~ /\d\d\d\d\d\d\d\d/) {
unless($age =~ /^\d\d\d\d\d\d\d\d$/) {
でしょう。

/\d\d\d\d\d\d\d\d/ だと「8文字の数字を含む文字列」にマッチしますので、
12345678xxxxx なんてのも通ってしまいます。


7:[完了] アブサミラノ [2002/04/22 18:09 ]

たくさんご回答をいただいて恐縮です。

/^\d\d\d\d\d\d\d\d$/ で確実に8桁の数字に
マッチできました。

ヨシミさん、andiさん、ふじさん、大変お世話に
なりました。ありがとうございました。


8:[完了] えび [2002/04/22 20:34 ]

ちなみに /^\d{8}$/ と書くこともできます。


9:[完了] アブサミラノ [2002/04/23 09:29 ]


/^\d{8}$/ 「{}」を使うと短く書けますね!
/^\d{7,8}$/ 等とすると、7桁〜8桁の数字に
マッチできるようになり、使い勝手がよさそうです。

ありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World