http://search.cpan.org/dist/Regexp-Common/
Regexp::Commonには、〜::number や 〜::URI::http 等の様々な正規表現が集められています。
Regexp::Common::number
まず、Regexp::Common::numberを使用すれば、数値形式(整数や小数)チェックを簡単に実装することができます。
※1,000のようにカンマ区切もOK。
#!C:/Perl/bin/perl use strict; use warnings; use Regexp::Common qw /number/; my @test_vals = (-1000,"-1,000",-1,0,1,100,1.0,1.5,"1000A"); for my $org_val ( @test_vals ){ #整数の数値書式check (-sepでカンマ区切も許可) if ($org_val =~ /^$RE{num}{int}{-sep=>',?'}{-keep}$/o){ print "$org_val\tis number ("; #-keepで数値全体や符号等をキャプチャー print sprintf("entire=%-6s sign=%-1s digits=%-5s",$1,$2,$3),")\n"; next; } print "$org_val\tis NOT number\n"; }
$ ./foo2.pl -1000 is number (entire=-1000 sign=- digits=1000 ) -1,000 is number (entire=-1,000 sign=- digits=1,000) -1 is number (entire=-1 sign=- digits=1 ) 0 is number (entire=0 sign= digits=0 ) 1 is number (entire=1 sign= digits=1 ) 100 is number (entire=100 sign= digits=100 ) 1 is number (entire=1 sign= digits=1 ) 1.5 is NOT number 1000A is NOT number
Regexp::Common::URI::http
次のサンプルは、http,及びhttpsの書式をチェックしたものです。
※ポイントは、-scheme =>'(https|http)' ですね。
#!/usr/local/bin/perl use strict; use warnings; use utf8; use Regexp::Common qw/URI/; my @STRS = ('http://www.google.co.jp/', 'https://www.google.co.jp/'); main(); sub main { for my $str ( @STRS ){ if ($str =~ /($RE{URI}{HTTP}{-scheme =>'(https|http)'})/o){ print "$str is url\n"; } else { print "$str is not url\n"; } } }