【问题标题】:Regex not allowing negative numbers正则表达式不允许负数
【发布时间】:2011-07-06 09:22:06
【问题描述】:

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

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;  
 }

【问题讨论】:

  • 我的建议是试着学会做你的工作......总有一天他们不会要求你重构别人的代码,而你必须编写自己的代码。
  • 是的,你是对的..但我不明白这部分代码做了什么...^[0-9]*\\.?[0-9]{0,2} $

标签: javascript regex


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    至于你的要求,马拉斯的回答是对的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多