Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 4604176
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T00:15:28+00:00 2026-05-22T00:15:28+00:00

I know that there is a library that do that use Scalar::Util qw(looks_like_number); yet

  • 0

I know that there is a library that do that

use Scalar::Util qw(looks_like_number);

yet I want to do it using perl regular expression. And I want it to work for double numbers not for only integers.

so I want something better than this

$var =~ /^[+-]?\d+$/

thanks.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T00:15:29+00:00Added an answer on May 22, 2026 at 12:15 am

    Constructing a single regular expression to validate a number is really difficult. There simply are too many criteria to consider. Perlfaq4 contains a section “How do I determine whether a scalar is a number/whole/integer/float?

    The code from that documentation shows the following tests:

    if (/\D/)                          {print "has nondigits\n"      }
    if (/^\d+$/)                       {print "is a whole number\n"  }
    if (/^-?\d+$/)                     {print "is an integer\n"      }
    if (/^[+-]?\d+$/)                  {print "is a +/- integer\n"   }
    if (/^-?\d+\.?\d*$/)               {print "is a real number\n"   }
    if (/^-?(?:\d+(?:\.\d*)?|\.\d+)$/) {print "is a decimal number\n"}
    if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/) {
        print "is a C float\n"
    }
    
    • The first test disqualifies an unsigned integer.
    • The second test qualifies a whole number.
    • The third test qualifies an integer.
    • The fourth test qualifies a positive/negatively signed integer.
    • The fifth test qualifies a real number.
    • The sixth test qualifies a decimal number.
    • The seventh test qualifies a number in c-style scientific notation.

    So if you were using those tests (excluding the first one) you would have to verify that one or more of the tests passes. Then you’ve got a number.

    Another method, since you don’t want to use the module Scalar::Util, you can learn from the code IN Scalar::Util. The looks_like_number() function is set up like this:

    sub looks_like_number {
      local $_ = shift;
    
      # checks from perlfaq4
      return $] < 5.009002 unless defined;
      return 1 if (/^[+-]?\d+$/); # is a +/- integer
      return 1 if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/); # a C float
      return 1 if ($] >= 5.008 and /^(Inf(inity)?|NaN)$/i) 
               or ($] >= 5.006001 and /^Inf$/i);
    
      0;
    }
    

    You should be able to use the portions of that function that are applicable to your situation.

    I would like to point out, however, that Scalar::Util is a core Perl module; it ships with Perl, just like strict does. The best practice of all is probably to just use it.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Does anyone know if there is a common javascript library to enable scrolling that
Does anyone know if there's an available python library compatible with Python2.6 that exposes
Does anyone know if theres a jquery autocomplete library that works similar to the
I know that there are some threads have a similar issue with this thread.
I know that there are lot's of questons on this, but all seem to
I know that there are others posts with solutions on the site but i
I know that there are currently questions on SO already pertaining to saving jQuery
I know that there are lots of examples out there on this, but they
I know that there can be multiple values for an email, but I'm not
I know that there are many Delphi database related questions available, but I'm considering

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.