Javascript 接受正数和负数的正则表达式

Javascript 接受正数和负数的正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我需要一个正则表达式来帮助我接受正数和负数 我使用了^-?\d*(.\d+)$表达式 validateNegativeNumber(e: any) { let input = String.fromCharCode(e.charCode); const reg = /^-?\d*(.\d+)?$/; if (!reg.test(input)) { e.preventDefault(); } } Expecte

我需要一个正则表达式来帮助我接受正数和负数

我使用了
^-?\d*(.\d+)$
表达式

validateNegativeNumber(e: any) {
   let input = String.fromCharCode(e.charCode);
        const reg = /^-?\d*(.\d+)?$/;
        if (!reg.test(input)) {
            e.preventDefault();
        }
    }

Expected result: 5, +5, -5, 0
Unexpected results: 1.5, -1.5, 5++++, ++5, ---5, 5--, 50--6

您没有检查
+
符号。此外,不需要捕获组

使用以下命令:

^[+-]?\d+$

  • 开头有一个可选的
    +
    -
    符号
  • 后跟一个或多个数字,直到结束
  • 这个怎么样

    const reg=/^[+-]?\d*(\.\d+)?$/;
    常数valids=['+5'、'-5'、'-5'、'-5'、'-0.6'、'.55'、'-555.124'];
    常量无效=['-5','5+','5-'];
    log(“valids数组测试”);
    valids.forEach(有效=>{
    控制台日志(注册测试(有效));
    });
    console.log(“测试无效数组”);
    invalids.forEach(无效=>{
    控制台日志(注册测试(无效));
    
    });
    您可以在HTML中使用
    输入
    标记的
    模式
    属性,如下所示:

    
    
    说明:
    pattern
    属性可用,与其调用验证输入的函数,不如使用它。那将是一项额外的工作


    我希望它能帮上忙。

    使用这个,接受正数或负数

    ^-?[0-9]\d*(\.\d+)?$
    
    ^[+-]?\d+(?:\。\d+)$

    说明:

    ^
    匹配字符串的开头(因此“abc212”将不会验证)

    [+-]?
    允许的第一个字符是+o-匹配0或1次出现(即
    )。请注意,如果您不想使用
    +
    符号,您可以只写
    -?
    ,这样正则表达式将验证匹配的0或1个
    -
    作为第一个字符

    \d+
    之后,您可以有任意数量的数字(至少一位,因为我们使用的是
    +

    (?:\.\d+)
    最后,我们可以有0或1个点(
    \.
    )的出现(由
    给出),后跟任意数量的数字(
    \d+
    )。请注意,组开头的
    ?:
    表示这是一个“非捕获组”)


    $
    匹配字符串的结尾(因此“231aaa”将不会验证)

    这与我的答案有什么不同?我提供了一些测试数据来证明正则表达式工作正常?你为什么要费心评论?我们有相同的方法吗?你认为我只是复制了你的正则表达式吗?在你修改正则表达式之前,我们有同样的方法。这就是我评论的时候。只要你能提供其他几种解决问题的方法,这是受欢迎的。我没有过度反应。我只是问这两个答案之间是否有什么不同,因为我很可能一开始就没有抓住差异。这是一个尽可能礼貌的问题。它将匹配
    +
    -
    而且即使后面没有数字,我想你一定是在使用
    \d+
    而不是
    \d*
    ,我建议你补充一些解释,为什么OP的代码不起作用,为什么你的代码会起作用,这将有助于他们学习新事物,而不仅仅是怀疑它是神奇的,无论如何+1