输入过滤器正则表达式单小数,仅允许0或5

我的输入过滤器功能如下:

(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));

当前我正在使用此正则表达式模式:

^\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*[.,1}[05]$

它在regex测试器站点上似乎是正确的,但是当应用于输入过滤器时,它只允许我键入0和5,而不是其他数字以及点(。)

regextester Link here

更新1:添加了JSfiddle链接

Jsfiddle link

任何帮助都很好

haosansan 回答:输入过滤器正则表达式单小数,仅允许0或5

在您的模式^\d*[.,]?\d{0,1}[05]$中,前3个部分是可选的,因此只能匹配一个0或5。

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

如果您希望能够键入它,可以使用

将点和最后的0或5设为可选。

^\d+\.?[05]?$

然后在处理数据时进行另一次验证,以验证整个模式匹配1+位数字,并使用字符类来验证与点和数字0或5匹配的可选部分。

^\d+(?:\.[05])?$
  • ^字符串的开头
  • \d+匹配1个以上的数字
  • (?:\.[05])?(可选)匹配一个点和0或5
  • $字符串结尾

Regex demo

,

这个怎么样?

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

Demo

本文链接:https://www.f2er.com/3168354.html

大家都在问