Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入筛选器正则表达式单十进制,仅允许0或5_Javascript_Regex - Fatal编程技术网

Javascript 输入筛选器正则表达式单十进制,仅允许0或5

Javascript 输入筛选器正则表达式单十进制,仅允许0或5,javascript,regex,Javascript,Regex,我有一个输入过滤器函数,如下所示: (function($) { $.fn.inputFilter = function(inputFilter) { return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() { if (inputFilter(this.value)) { this.oldValue = this.value;

我有一个输入过滤器函数,如下所示:

(function($) {
$.fn.inputFilter = function(inputFilter) {
    return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
        if (inputFilter(this.value)) {
        this.oldValue = this.value;
        this.oldSelectionStart = this.selectionStart;
        this.oldSelectionEnd = this.selectionEnd;
        } else if (this.hasOwnProperty("oldValue")) {
        this.value = this.oldValue;
        this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
        }
    });
};
}(jQuery));
当前im使用此正则表达式模式:

^\d*[.,]?\d{0,1}$
返回以下内容:

a        == false
1.0      == true
3.5      == true
1.1      == true
2.34     == false
11.0     == true
1.1      == true
1.2      == true
1.3      == true
1.5      == true
1.0      == true
2        == true
预期结果:

a        == false
1.0      == true
3.5      == true
1.1      == false
2.34     == false
11.0     == true
1.1      == false
1.2      == false
1.3      == false
1.5      == true
1.0      == true
2        == true
我尝试使用:

^\d*[.,]?\d{0,1}[05]$
在regex tester站点上似乎是正确的,但当应用到输入过滤器时,它只允许我输入0和5,而不允许输入其他数字和点

更新1:添加了JSFIDLE链接

在您的模式^\d*[,]?\d{0,1}[05]$中,任何帮助都是非常好的

。$前3个部分是可选的,因此它只能匹配单个0或5

\d{0,1}允许一个数字0-9后跟0或5

如果您想允许键入,可以使用

^\d+\.?[05]?$
然后,在处理数据时执行另一个验证,以验证整个模式是否匹配1+个数字,以及使用字符类匹配点和数字0或5的可选部分

^\d+(?:\.[05])?$
^字符串开头 \d+匹配1+个数字 ?:\.[05]? 可选地匹配一个点和0或5 $字符串结尾 这个怎么样

^\d+(?:[\.,][05]0*)?$

它不允许我输入点。不能说这个不起作用,但他似乎指定逗号和点都是有效的分隔符,那么1.50呢?我猜这也是对他的输入的一个有效答案。@Teddybugs如果你想键入它,你可以使用^\d+\.?[05]?$,但请注意,它也将只匹配一个像1这样的点的数字。在处理数据时,您可以使用此模式并使用答案中的模式进行另一次检查。@NoureldeanSwearky也许这也是允许的,只有问题状态的标题只允许0或5,并且示例数据中没有逗号。@Thefourthbird True,它不必在5之后允许0,这很公平,但是逗号是在他当前的正则表达式中指定的,即使在他的示例中没有指定。