generally inappropriate work, school, hobbies, and toilet jokes

31Dec/090

isNumericString(): A JavaScript Function to Identify Numbers Stored as Strings

Some Javascript Code

I wrote this function recently to determine whether a given string can be converted into a number by JavaScript's built-in parseInt() and parseFloat() functions. Take a look and let me know if you have any suggestions for improvement!

function isNumeric(str)
{
    /*
        Valid numeric string examples:
            123456
            1.23456
            1.23e456
            +123456
            -123456
            +1.23456
            -1.23e456
            etc.
    */

    var validChars = "0123456789";
    var validOnce = ".e";
    var validAtStart = "+-";
    var notValidAtStart = "e";

    for (i = 0; i < str.length; i++)
    {
        var ch = str.charAt(i);

        if(i == 0)
        {
            if (validChars.indexOf(ch) == -1 &&
                validAtStart.indexOf(ch) == -1 &&
                validOnce.indexOf(ch) == -1)
            {
                return false;
            }else if(notValidAtStart.indexOf(ch) != -1)
            {
                return false;
            }
        }else if (validChars.indexOf(ch) == -1 &&
            validOnce.indexOf(ch) == -1)
        {
            return false;
        }
    }

    //check validonce are only appearing once
    for (i = 0; i < validOnce.length; i++)
    {
        var ch = validOnce.charAt(i);

        if(str.indexOf(ch) != str.lastIndexOf(ch))
        {
            return false;
        }
    }

    return true;
}