正则表达式不允许负数

时间:2011-07-06 09:22:07

标签: javascript regex

我有一个阻止用户输入负值的功能。任何人都可以告诉我需要在下面的正则表达式中进行哪些更改才能使其正常工作。

function testAmount(obj){

var reg0Str = '^[0-9]*\\.?[0-9]{0,2}$';
var reg1Str =  /(^\d{1,3}(,\d\d\d)*$)/;
var temp = obj.value;

var reg0 = new RegExp(reg0Str);
var testFlag = reg0.test(remCommas(temp));
var testFlag0 = reg1Str.test(temp);
if(!(testFlag||testFlag0)){
      alert("Please enter a valid Number");
    obj.focus;
}
  return testFlag;  
 }

2 个答案:

答案 0 :(得分:4)

您只允许数字字符(和点)。在正则表达式的开头添加\\-?

答案 1 :(得分:1)

  

我不明白这一部分是什么   代码确实...... ^ [0-9] * \。?[0-9] {0,2} $

^将正则表达式锚定到字符串的开头(而不是匹配字符串中的任何位置)
[0-9]只是数字,可以缩写为\ d(或斜杠内的\ d) *表示匹配0次或更多次 \\.?表示可选的点
[0-9]{0,2}表示0到2位数 $将正则表达式锚定到字符串的末尾(匹配后没有任何内容)

因此,正好是零个或多个数字,后跟一个可选的点,后跟最多两个数字。请注意,空字符串也匹配...

至于你的要求,Maras的答案是对的。

我质疑你展示的代码的质量,但这是另一回事(为什么一个字符串与真正的正则表达式,[0-9]与\ d等等。看起来像是不同人的更新。)