Perlメモ 数値判定

Perlの正規表現で整数(/数列/数字/数値)か判定する方法

(1)+-無しの整数の時
正規表現を使って簡単にできる。

if($num =~ /^[0-9]+$/){
    print "Yes";
}else{
    print "No";
}

※0から始まる「0123」や「0000」などもマッチするので注意。
 計算処理で使うなら0があっても問題は無いと思う。

(2)+-も使える整数の場合
正規表現を使って簡単にできる。

if($num =~ /^[+-]?[0-9]+$/){
    print "Yes";
}else{
    print "No";
}

※(1)と同じ「0123」や「0000」などもマッチするので注意
※「-0」でもOKになるので注意。
 計算処理で使用するなら-0でも問題は無いと思う。

(3)少数点以下も許可する場合
小数点ありの正規表現は「^[0-9]+\.[0-9]+$」だが、これだと整数のみの時マッチしないので、
パイプ(|)を使って整数の時と小数点ありの時の条件をどちらかでマッチさせる。

if($num =~ /^[0-9]+$|^[0-9]+\.[0-9]+$/){
    print "Yes";
}else{
    print "No";
}

※0から始まる「0123」などもYesになるので注意。

(4)桁数が決まっている数列
銀行の暗証番号のように0000など桁数が決まっている場合、
^[0-9][0-9][0-9][0-9]$でも良いけど、{}を使うと便利。
4桁の場合は^[0-9]{4}$とします。

if($num =~ /^[0-9]{4}$/){
    print "Yes";
}else{
    print "No";
}

(5)桁数が可変する数列
桁数が可変の場合、1から4桁の場合は^[0-9]{1,4}$とします。

if($num =~ /^[0-9]{1,4}$/){
    print "Yes";
}else{
    print "No";
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA