Ant_Jhon,
В твоем случае, если с регуляркой, напрашивается что-то вроде такого
test=function(input){
var re=/(\d+)?\.?\d+\.?|^$/
var s=input.match(re)
if(s){if(s[0]===input){...}}
}
в s[0] вернется паттерн, например, из foo10bar вернется 10, затем сравнивается с исходной строкой, действие наступает, только если совпало, например, 10 пройдет, а 10а -- нет. Глобальный и многострочный поиски тогда не нужны, никто в инпуте не будет с этим извращаться специально, если юзер нажимает энтер или таб, он выскакивает обычно из поля ввода, аоэтому нам нужно тут только первое введенное, более ничего, иначе все чертовски усложняется.