文字列$priceのフォーマットのエラーチェックをしようとしています
文字列は通貨記号で始まります。(通貨記号はたくさんあるので省略します。そのため、以下では ? として示します)
したがって、正しい形式は「?12.34」または「? 2.34」または「?2.34」です。誤った形式は「1234」/「234」です。
そこでまず、グローバル検索 (これで楽しい正規表現) を使用して、小数の否定一致をチェックします。1 桁または 2 桁の 0 ~ 9、小数の後に 2 桁の 0 ~ 9 が続く、負の (つまり、一致しない) 数字をチェックしようとしています。次の (テストされていない) 理論パターンを思いつきました。これは初めての複雑な正規表現ですが、正しいでしょうか?
if ($price eq ''){
say'';
say 'You did not enter any price. Try again';
say'';
}
elsif ($price !~ /\./g ){
say'';
say 'Please include a decimal point';
say'';
}
elsif ($price !~ /[0-9]{1,2}\.[0-9]{2}$/){
say'';
say 'Please check the format of price (XX.XX)';
say'';