首页 > 解决方案 > 不能禁止测试中的负数

问题描述

我只想接受正十进制数。这是我所做的:

$("#btn").on("click", function() {
            var regex = new RegExp(/^\+?\d+,|\.?\d+$/);
            var test = regex.test($("#param_valeur").val());
            if (test == false) {
                $.alert({
                    title: 'Erreur',
                    content: 'Veuillez saisir un nombre !',
                });
            } else {
                $.post({
                    url:"/track/admin/configureSeuilHorsZone",
                    data:$("#frm").serialize(),
                    success:function(data, status, xhr) {
                        $("#george_content").load("/track/welcome");
                    }
                });
            }
        });

但在运行时它接受负数!那么如何禁止负数呢?

标签: javascriptregex

解决方案


您的正则表达式交替和模式没有按照您的想法进行,但无论如何,这里是一个仅匹配正十进制数/整数的正则表达式模式:

^\+?\d+(?:\.\d+)?$

如果您想在整数部分使用逗号,请使用:

^\+?\d{1,3}(?:,\d{3})*(?:\.\d+)?$

这是对第二个正则表达式模式的解释:

^            from the start of the string
\+?          match an optional leading + sign
\d{1,3}      then match 1 to 3 digits
(?:,\d{3})*  followed by zero or more thousands groups (e.g. ,123)
(?:\.\d+)?   followed by an optional decimal component
$            end of string

推荐阅读